Сообщение Re[5]: 2D-Linq и оптимизация цифровых фильтров - 4 от 04.08.2020 16:38
Изменено 04.08.2020 17:09 Mystic Artifact
Re[5]: 2D-Linq и оптимизация цифровых фильтров - 4
Здравствуйте, Sinclair, Вы писали:
MA>> По тесту видно, что кто-то его давненько не обновлял, но абсолютные цифры похожи на десктоп.
S>Кстати, странно, что CachedLinqSauvolaScalar проигрывает честной unsafe версии. Может, у меня там что-то отвалилось?..
S>Там же порождается вполне себе сопоставимый код.
S>В прошлый раз когда я на такое налетел, обнаружилась разница между JIT-ом динамического и статического кода.
S>Но её я заборол улучшением оптимизации. Попробуй прогнать тест с WHalf = 4, а?
S>И, если не затруднит, скинь сборку Linq2d.GetQuery, которая записывается в папочку Dynamic в выхлопе проекта.
Если ты говоришь, что там попрождается сопоставимый код — то на самом деле не совсем понятно откуда у тебя возникает 30-40% прироста...
Конечно, пожалуйста:
WHalf = 4
---
Вернул WHalf = 5, всё пересобрал. Запустил linq2d.benchmarks --keepFiles, и из него уже выковырял файлы.
И вот от этого запуска содержимое каталога Dynamic.
UPD: Ну и там только Linq2d.GetDetect.dll и Linq2d.GetIntegral.dll — никакого Linq2d.GetQuery там не лежит... а внутри GetDetect-а Transform с 590 локалами!
MA>> По тесту видно, что кто-то его давненько не обновлял, но абсолютные цифры похожи на десктоп.
S>Кстати, странно, что CachedLinqSauvolaScalar проигрывает честной unsafe версии. Может, у меня там что-то отвалилось?..
S>Там же порождается вполне себе сопоставимый код.
S>В прошлый раз когда я на такое налетел, обнаружилась разница между JIT-ом динамического и статического кода.
S>Но её я заборол улучшением оптимизации. Попробуй прогнать тест с WHalf = 4, а?
S>И, если не затруднит, скинь сборку Linq2d.GetQuery, которая записывается в папочку Dynamic в выхлопе проекта.
Если ты говоришь, что там попрождается сопоставимый код — то на самом деле не совсем понятно откуда у тебя возникает 30-40% прироста...
Конечно, пожалуйста:
WHalf = 4
BenchmarkDotNet=v0.12.1, OS=Windows 10.0.19041.388 (2004/?/20H1)
Intel Core i7-4770 CPU 3.40GHz (Haswell), 1 CPU, 8 logical and 4 physical cores
.NET Core SDK=5.0.100-preview.6.20318.15
[Host] : .NET Core 3.1.6 (CoreCLR 4.700.20.26901, CoreFX 4.700.20.31603), X64 RyuJIT
DefaultJob : .NET Core 3.1.6 (CoreCLR 4.700.20.26901, CoreFX 4.700.20.31603), X64 RyuJIT
| Method | WHalf | FileName | Mean | Error | StdDev | Ratio | RatioSD |
|------------------------ |------ |----------- |-----------:|---------:|---------:|------:|--------:|
| SafeSauvola | 4 | p00743.bmp | 1,299.4 ms | 18.59 ms | 16.48 ms | 1.82 | 0.02 |
| UnsafeSauvolaScalar | 4 | p00743.bmp | 714.8 ms | 4.33 ms | 4.05 ms | 1.00 | 0.00 |
| LinqSauvolaVector | 4 | p00743.bmp | 1,017.6 ms | 11.79 ms | 9.20 ms | 1.42 | 0.01 |
| LinqSauvolaScalar | 4 | p00743.bmp | 1,138.0 ms | 5.30 ms | 4.69 ms | 1.59 | 0.01 |
| CachedLinqSauvolaVector | 4 | p00743.bmp | 695.6 ms | 5.89 ms | 5.22 ms | 0.97 | 0.01 |
| CachedLinqSauvolaScalar | 4 | p00743.bmp | 828.5 ms | 7.10 ms | 6.64 ms | 1.16 | 0.01 |
---
Вернул WHalf = 5, всё пересобрал. Запустил linq2d.benchmarks --keepFiles, и из него уже выковырял файлы.
результаты тоже нормальные | |
Кстати, смешно, но он мне несколько раз подряд для CachedLinqSauvolaVector показывал результат хуже чем у CachedLinqSauvolaScalar, где-то 850ms, хотя при warmup — 700ms, и это произошло, как только я сказал ему keepFiles. Уж не знаю, что за магия случилось. Потом всё очистил, пересобрал и стало всё нормально.
| |
И вот от этого запуска содержимое каталога Dynamic.
UPD: Ну и там только Linq2d.GetDetect.dll и Linq2d.GetIntegral.dll — никакого Linq2d.GetQuery там не лежит... а внутри GetDetect-а Transform с 590 локалами!
Re[5]: 2D-Linq и оптимизация цифровых фильтров - 4
Здравствуйте, Sinclair, Вы писали:
MA>> По тесту видно, что кто-то его давненько не обновлял, но абсолютные цифры похожи на десктоп.
S>Кстати, странно, что CachedLinqSauvolaScalar проигрывает честной unsafe версии. Может, у меня там что-то отвалилось?..
S>Там же порождается вполне себе сопоставимый код.
S>В прошлый раз когда я на такое налетел, обнаружилась разница между JIT-ом динамического и статического кода.
S>Но её я заборол улучшением оптимизации. Попробуй прогнать тест с WHalf = 4, а?
S>И, если не затруднит, скинь сборку Linq2d.GetQuery, которая записывается в папочку Dynamic в выхлопе проекта.
Если ты говоришь, что там попрождается сопоставимый код — то на самом деле не совсем понятно откуда у тебя возникает 30-40% прироста...
Конечно, пожалуйста:
WHalf = 4
---
Вернул WHalf = 5, всё пересобрал. Запустил linq2d.benchmarks --keepFiles, и из него уже выковырял файлы.
И вот от этого запуска содержимое каталога Dynamic.
UPD: Ну и там только Linq2d.GetDetect.dll и Linq2d.GetIntegral.dll — никакого Linq2d.GetQuery там не лежит... а внутри GetDetect-а Transform с около 600 локалами!
MA>> По тесту видно, что кто-то его давненько не обновлял, но абсолютные цифры похожи на десктоп.
S>Кстати, странно, что CachedLinqSauvolaScalar проигрывает честной unsafe версии. Может, у меня там что-то отвалилось?..
S>Там же порождается вполне себе сопоставимый код.
S>В прошлый раз когда я на такое налетел, обнаружилась разница между JIT-ом динамического и статического кода.
S>Но её я заборол улучшением оптимизации. Попробуй прогнать тест с WHalf = 4, а?
S>И, если не затруднит, скинь сборку Linq2d.GetQuery, которая записывается в папочку Dynamic в выхлопе проекта.
Если ты говоришь, что там попрождается сопоставимый код — то на самом деле не совсем понятно откуда у тебя возникает 30-40% прироста...
Конечно, пожалуйста:
WHalf = 4
BenchmarkDotNet=v0.12.1, OS=Windows 10.0.19041.388 (2004/?/20H1)
Intel Core i7-4770 CPU 3.40GHz (Haswell), 1 CPU, 8 logical and 4 physical cores
.NET Core SDK=5.0.100-preview.6.20318.15
[Host] : .NET Core 3.1.6 (CoreCLR 4.700.20.26901, CoreFX 4.700.20.31603), X64 RyuJIT
DefaultJob : .NET Core 3.1.6 (CoreCLR 4.700.20.26901, CoreFX 4.700.20.31603), X64 RyuJIT
| Method | WHalf | FileName | Mean | Error | StdDev | Ratio | RatioSD |
|------------------------ |------ |----------- |-----------:|---------:|---------:|------:|--------:|
| SafeSauvola | 4 | p00743.bmp | 1,299.4 ms | 18.59 ms | 16.48 ms | 1.82 | 0.02 |
| UnsafeSauvolaScalar | 4 | p00743.bmp | 714.8 ms | 4.33 ms | 4.05 ms | 1.00 | 0.00 |
| LinqSauvolaVector | 4 | p00743.bmp | 1,017.6 ms | 11.79 ms | 9.20 ms | 1.42 | 0.01 |
| LinqSauvolaScalar | 4 | p00743.bmp | 1,138.0 ms | 5.30 ms | 4.69 ms | 1.59 | 0.01 |
| CachedLinqSauvolaVector | 4 | p00743.bmp | 695.6 ms | 5.89 ms | 5.22 ms | 0.97 | 0.01 |
| CachedLinqSauvolaScalar | 4 | p00743.bmp | 828.5 ms | 7.10 ms | 6.64 ms | 1.16 | 0.01 |
---
Вернул WHalf = 5, всё пересобрал. Запустил linq2d.benchmarks --keepFiles, и из него уже выковырял файлы.
результаты тоже нормальные | |
Кстати, смешно, но он мне несколько раз подряд для CachedLinqSauvolaVector показывал результат хуже чем у CachedLinqSauvolaScalar, где-то 850ms, хотя при warmup — 700ms, и это произошло, как только я сказал ему keepFiles. Уж не знаю, что за магия случилось. Потом всё очистил, пересобрал и стало всё нормально.
| |
И вот от этого запуска содержимое каталога Dynamic.
UPD: Ну и там только Linq2d.GetDetect.dll и Linq2d.GetIntegral.dll — никакого Linq2d.GetQuery там не лежит... а внутри GetDetect-а Transform с около 600 локалами!