Jump to content

John Terwiske

  • Content Count

  • Joined

  • Last visited

Community Reputation

4 Neutral

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. John Terwiske

    SQLite truncating values?

    That isn't true. https://www.sqlite.org/datatype3.html SQLite's storage class idea is a different. That might be what you mean when you speak of string and varchar?
  2. John Terwiske

    Delphi profiler

    In the table above, the cpp implementation is the accepted solution for the Dave Plummer YouTube series (Microsoft VS C++ 20 with all optimizations). The Delphi solution (10.3.3) is the accepted solution for Delphi-- with a couple of modifications that add add about 20% to number of iterations (just by inlining member functions, iirc). I'm not really surprised by these results, and memory bound apps (my own included) seem to suffer quite a bit with Delphi. What was the fuss about (not that I wish to reopen a topic)?
  3. John Terwiske

    Delphi profiler

    Not yet, but it certainly looks worthwhile!
  4. John Terwiske

    Delphi profiler

    If one starts with good algorithm then the only thing that works for me is to do profiling (without instrumentation). I've had good luck with (the free) Vtune Profiler from Intel. Attached is a picture showing comparison of Delphi and Cpp for prime sieving console application on Windows. This sample uses the Fastmm5, but the differences in cache misses are not that different than the Delphi shipping version of Fastmm. I should also note that the Delphi implementation needs more work (in the algorithm more than anything else), but this might give you an idea of where to look for performance improvement. Also, one needs to jump through some hoops to find the actual line in Delphi code where bottlenecks appear (unlike some of the profilers mentioned above which can zero in to function).
  5. John Terwiske

    cppcon 2021

    There are now 48 talks on YouTube from this past October's conference. I was looking forward to seeing this one, and it didn't disappoint. The real takeaway for me was that the code we write is not necessarily what the cpu actually does. Something that I've know for a while, but this presentation really hammers it home from a knowledgeable expert. There's a lot here for we Delphi users, too.
  6. John Terwiske

    Unable to create sqlite database at runtime with firedac

    Your code does indeed work without modification. *****Provided you run it with permission to write to the root of "C" drive (i.e. run as Adminstrator).*** It's not a bug, it's a feature! 🙂
  7. John Terwiske

    Herb Sutter on C++20

    I've always enjoyed Herb's talks. The one that sticks in my mind is where he discusses the possible simplification of parameter passing in C++. This has (and is) one of the chief complexities of the language that sometimes confounds beginners. That proposal went no where as far as I can tell, and I don't know exactly why it failed but I think the old canard "it's not C++" or maybe something to do with library compatibility. Too bad, really. The other thing about "modern" C++ is that it is very difficult to teach. There's another talk I think from 2019 at cppcon (Nicholas J., irrc) that discusses the 18 (or more) different ways to initialize an integer. And once you get into move semantics, compile-time programming, and when and if constexpr works like you think it does then you really need great teaching skills. Their three year cycle for language enhancements is astonishing. I remain envious of compilers that can optimize like theirs can. If only Delphi had...
  8. John Terwiske

    Delphi LLVM question

    Do any of the Delphi compilers that use LLVM (do they all use LLVM now?) allow one to output the LLVM Intermediate representation (IR) to a file? In the Clang / LLVM compilation pipeline this file would typically have an ll extension and is a kid of pseudo-assembly. Thanks
  9. John Terwiske

    InterBase or Firebird?

    For all new work that does not require a server DB I use SQLite.
  10. John Terwiske

    Firedac Sqlite bug?

    I've reported this as a bug: https://quality.embarcadero.com/browse/RSP-31670
  11. John Terwiske

    Firedac Sqlite bug?

    Odd that there would be a regression in 10.3.3. I'm looking forward to 10.4.1, most especially for the ability to non-statically link to SQLite library.
  12. John Terwiske

    Firedac Sqlite bug?

    Thanks for the confirmation in 10.3.3.
  13. John Terwiske

    Firedac Sqlite bug?

    In Delphi Rio 10.3.3 (I've not tested this on other versions) there seems to be a parsing bug with this recursive CTE: WITH RECURSIVE example1_cte (Id, No, ParsedText, Unparsed) AS ( SELECT Id, 0 as No, '' as ParsedText, TextToParse || ',' as TextToParseWithTrailingComma FROM test1 UNION ALL -- "ALL" is not strictly necessary in this example SELECT Id, No+1, -- increment the counter for this row SUBSTR(Unparsed, 0, INSTR(Unparsed, ',') ), SUBSTR(Unparsed, INSTR(Unparsed, ',') + 1) FROM example1_cte WHERE Unparsed <> '' ) -- SELECT from the recursive cte SELECT Id, No, TRIM(ParsedText) as ParsedText FROM example1_cte WHERE ParsedText <> '' ORDER BY Id ASC, No ASC; When executed a Firedac error message appears: [FireDac][Phys][SQLite] Error: no such table column: example1_cte.Id. And yet, if the line below the UNION ALL is changed to SELECT Id+0, (I.e. just adding a zero to Id), the error message goes away, and the CTE works correctly. btw, this query works fine without the "+0" in other SQLite query processors (SQLiteStudio). I think this is a bug, but cannot locate it in JIRA. Attached is a quick and dirty example project. (Change the FDQuery1 to remove the "+0" to see the error.) I don't have 10.4 so not sure this still exists. Project1.dpr Project1.dproj Unit1.dfm Unit1.pas
  14. Thank you. It would appear that whatever issue I was having with unicode is no longer a problem with the Delphi zip code/classes. Your solution works with all of the non-spanning zip files I've got on hand for testing. It's about 6% slower vs. the third party solution I'm currently using, and this matters with these files that are in the 2Gbyte range. I'll look into this some more... someday. 🙂
  15. Yes, but I don't see how this extracts a single file to a stream of some sort. And extracting to a file on disk makes these useless for my purposes. It's almost there, but I think this is why I started using the third party years ago. Well, that and at the time as I recall there was a problem with unicode characters in the items within the zip file (memory fades on this though.)