it has multi-threading enhancements (faster locking)
AVX support which seems tough for floating point heavy applications as Delphi generates SSE instructions for them
Reminder to self: how big is that impact and could the locking be separately merged into the base repository?
Eric Grange:
Looking at https://github.com/pleriche/FastMM4/issues/36 and given than the compile generates SSE2 code for floating point, I guess using AVX may be problematic when your code also does a lot of floating point using Delphi code (rather than AVX asm)
The AVX instructions support both 128-bit and 256-bit SIMD. The 128-bit versions can be useful to improve old code without needing to widen the vectorization, and avoid the penalty of going from SSE to AVX, they are also faster on some early AMD implementations of AVX. This mode is sometimes known as AVX-128.
A change of FetchOptions.CursorKind from ckAutomatic to ckDynamic does the trick.
did fix this issue:
I stumbled about a problem regarding FireDAC and MSSQL 2016. The table has four fields, one being of type varbinary(max). When I omit this blob field from the SELECT, I can update any field without problems using the edit and post methods of TFDQuery. It is only when I include that blob field in the SELECT, I cannot update the other fields anymore (the blob is not changed). The post runs into a timeout. It seems that the table is somehow locked. That guess is backed by the fact that even a simple UPDATE query executed from Management Studio is also blocked until I reset my application inside the debugger.Interestingly an INSERT runs without problems.
Even when the Delphi team was large, the documentation was lacking, so with the reduced Delphi team size, I don’t have high expectations of the below to get fixed.
But since much of the post Delphi 7 run-time library looks a lot like the .NET core, you can usually fallback to the Microsoft documentation.
I knew that methods on interfaces were not compatible with the procedure of object (like [WayBack] TProc)or function of object construct, but they are also not compatible with the reference to procedure or reference to function construct.
It’s not nearly as good as the one by Uwe Raabe, but I didn’t really update this code for about a decade as it has functioned well for me in the current state: in 2009 it was like [WayBack] bo library – Source Code.
A couple of years ago I wrote a two-part article about a dataset enumerator: A Magical Gathering – Part 1 and Part 2. Well, things evolved a bit since then and I wondered how one would implement something similar given the current features of Delphi. Actually I am following here a suggestion from commenter Alan Clark.
So for now it’s just to document that my enumerator is there and that it works as intended.
It taught me that CreateFileA and CreateFileW (the ANSI and Unicode versions of [WayBack] CreateFile function (Windows)) accept a FILE_FLAG_DELETE_ON_CLOSE parameter, so as soon as you close the handle, Windows will dispose of the file.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters