Go to card has become slow
Mark Waddingham
mark at livecode.com
Sat Apr 11 11:41:49 EDT 2020
On 2020-04-11 13:54, Neville Smythe via use-livecode wrote:
> Sorry Brian, I uploaded from the wrong folder. Here is the update test
> set. But the only difference is that you dont need to hold down the
> shift key to see the binary save timing.
>
> https://www.dropbox.com/sh/cb2r9jbohxqv6bp/AAAQ1weLLlzrKYQ21yn1apf9a?dl=0
> <https://www.dropbox.com/sh/cb2r9jbohxqv6bp/AAAQ1weLLlzrKYQ21yn1apf9a?dl=0>
>
> Colin, the test set here shows the timing of saving of stacks; the
> times for Windows 10 are a large multiple of Mac/Unix and we
> discussing possible reasons before updating the bug report bug 21305
> <https://quality.livecode.com/show_bug.cgi?id=21305> for Quality
> Control
So I also had a look at this today - using Visual Studio's builtin CPU
profiling diagnostic when running the engine in release mode.
There appear to be two reasons for the difference:
1) When saving each style run (block) in a field the engine is making
three Win32 API calls.
2) The saving method uses (and always has used) direct Win32 system
calls to manipulate files without any buffering (on other platforms we
wrap the standard C library stdio FILE which has its own buffer).
I tested your very neat little stack with 1323 cards (about 36Mb of
data).
On my machine with the engine as it is it takes:
- Windows 10 (VM) [ Community 'develop' ] - 10s
- macOS Catalina (Native) [ Business 9.5.0 ] - 0.45s
After doing a hacky patch to the sites using the Win32 API calls (i.e.
caching the results and only calling them once) I got:
- Windows 10 (VM) [ Community 'develop' ] - 1.8s
After adding a very simple write buffer to the Win32 implementation of
the system file stream class we have. I got:
- Windows 10 (VM) [ Community 'develop' ] - 0.4s
Anyway, the patches I've made are quite rough at the moment, but I'll
endeavour to submit them as PRs in the next few days :)
Warmest Regards,
Mark.
--
Mark Waddingham ~ mark at livecode.com ~ http://www.livecode.com/
LiveCode: Everyone can create apps
More information about the use-livecode
mailing list