Jump to content

Steve Maughan

  • Content Count

  • Joined

  • Last visited

Everything posted by Steve Maughan

  1. In truth, little. It's just part of an optimization algorithm that needs to be as fast as possible.
  2. Steve Maughan

    Any Known GDI Lockup Issues with Delphi 10.3.2?

    HI David, Anders & Attila, Thanks for the input - I really appreciate it. I've recompiled with Tokyo 10.2.3 and the problem seems to have gone. I'll need to investigate further. I have madExcept so I'll see if that helps first. Thanks again, Steve
  3. Steve Maughan

    Any Known GDI Lockup Issues with Delphi 10.3.2?

    Hi Anders, I took your advice. There was nothing on the call stack, even in debug mode: Interestingly, after the freeze I started Loom and SnagIt to record the video. Both wouldn't start until AlignMix was unfrozen. To me this implies it's something to do with Windows 10. Thanks, Steve
  4. Steve Maughan

    Any Known GDI Lockup Issues with Delphi 10.3.2?

    Here's a video showing the behavior: https://www.loom.com/share/8a00020c3ba440df9a8998dbe17dc1f0 Any suggestions greatly appreciated. Thanks, Steve
  5. My application manages sales territory alignments e.g. zip code "32779" is assigned to territory "T164". Typically many people want to access and make changes to these assignments. For example, the manager on the west coast may want to dissolve a territory, and a manager on the east coast may want to expand a territory. It seems to me this is akin to version control. This being the case I've been thinking that Git could be used to manage the alignment version control. For this to happen I'd need my application to be able to access all the functionality of Git: commit, pull etc. Has anyone done this before? Are there any Delphi Git components or tutorials? Would I need to distribute a copy of git - I assume I will? Steve
  6. David & Thomas - you may well be right; it may be too complex for clients. Thanks, Steve
  7. What's your thinking? Potentially a company will want distributed people working on their part of the alignment. They may experiment locally themselves with different alignments before committing to the main alignment. They'd also like to be able to rollback changes to see what the alignment looked like at a specific date. To me this seems akin to software development. What am I missing that a central database would provide? Thanks - Steve
  8. Since the new MacOS compiler is based on LLVM I'd be interested to see any executable speed comparisons against Delphi Win 64 compiles. Won't the LLVM based compiler produce executables that run significantly faster? Or am I being too optimistic? Steve
  9. Steve Maughan

    Delphi 10.3 support for Ink / Pen?

    Back when Rio was initially launched I remember Marco mentioning it now supports Windows Pen / Ink. This would enable apps to use the Surface Pen. I can't find anything in the documentation. Does anyone know of a demo of how to use the Surface Pen with Delphi 10.3? Thanks, Steve
  10. Steve Maughan

    Delphi 10.3 support for Ink / Pen?

    Hi Gunther, Thanks - I'll take a look. This solution seems to use an ActiveX control. I was hoping to access via WinRT. Cheers, Steve
  11. No LLVM optimization is really disappointing. If you wind the clock back to 1995, many of the early developers coming from VB3 were exited about a compiled executable that ran at the same speed as "C" programs. They wanted and valued fast executables. Borland / Codegear / Embarcadero have each ignored this value their developers place on fast code and haven't improved the code optimization for 20 years. It seems they take a, "it's good enough" view. I'd encourage them to invest some time and include all the optimizations that LLVM offers (even if it slows down compilation speed for the Release Build). I think they'd be surprised at how well this would be received by the Delphi community. Steve
  12. Is the new release (10.3.2) component compatible with 10.3.1? I'm seeing some component vendors (e.g. DevExpress) say their latest release supports 10.3 (i.e. no mention of the ".1" or ".2"). This implies it will install components into 10.3.1 and 10.3.2. even thought this version of their components was released before 10.3.2 Can anyone confirm? Thanks - Steve
  13. Have they done that? Why would they do that? Thanks, Steve
  14. Hi David, I'm certainly not an expert in this field. Over the years I've seen various speed benchmarks that suggest Delphi's Windows compiler produces executables that are significantly slower than those produced by the top C++ compilers (e.g. Intel). In the chess world (where I am an expert) the rule of thumb is a Delphi version of a chess engine will run about 30% slower than the C++ equivalent code bases (Critter is the engine that was developed in two parallel code bases). Let's face it, there doesn't seem to have been any work done on optimizing the code created by the Delphi compiler in the last 20 years. I'm just hoping the new backend will be better. Thanks, Steve
  15. Steve Maughan

    Delphi 10.3 Update 2 available

    Apparently the new macOS Delphi compiler is based on the LLVM compiler. I wonder if future Delphi compilers for Win32 / Win64 will also be build on top of LLVM? Would this improve the speed of the final executables? Steve
  16. Are you sure? As I said above, in AlignMix I render a TBitmap.Canvas for each layer of a map using one worker thread per layer. It's rock solid, no crashes or resource issues when rendering. Steve
  17. I'm considering ways of speeding up an algorithm. One option is to add parallel "for loops". I can certainly add a single parallel "for loop" and get a speedup. The algorithms effectively has nested "for loops" and I could also make the inner "for loops" parallel. Is this a advisable or are nested parallel "for loops" a big no-no? Or does it depend on the number of levels of nesting e.g. one inner parallel loop may be ok, but more would be bad? Thanks, Steve
  18. Hi Stefan & Peter, Thanks! I'm assuming most users will have a two or four core system. But power users may have 64 cores; it was really them I was thinking about. Truth is, I need to stop optimizing at this stage and focus on the actual algorithm. Thanks again, Steve
  19. In my app (AlignMix - a mapping package) we draw the map in layers (e.g. one layer may be road, another towns). Each layer is rendered by its own thread. We then "smush" all the layers together to get the final image. It works well, so clearly it is possible to draw on a TCanvas in a thread as long as no other thread is drawing on the same canvas. Steve
  20. Steve Maughan

    CDATA CSV Component

    FlexCel also read / writes CSV files
  21. I have a small list of 200 items. Each item has a value. Over time, and with every iteration of my algorithm, each item's value is changed, but only slightly (e.g. ±2%). At any given time I'd like to quickly know the item with the smallest value (I don't care about any other value). What's the best data structure to accomplish this is a speedy manner? I initially thought of a priority queue, but I'm changing the value of each item in the list. Thanks, Steve
  22. HI Stefan, You may well be right. I need to test. Thanks, Steve
  23. Thanks everyone. It looks like a modified priority queue is the best solution. This keeps track of the minimum value and self balances when an internal node's value changes. Cheers, Steve