Сообщение Re: 5 вариантов unescape - угадайте какой самый быстрый (нео от 06.12.2019 8:30
Изменено 06.12.2019 8:31 Sinclair
Re: 5 вариантов unescape - угадайте какой самый быстрый (неожида
Здравствуйте, Shmj, Вы писали:
Неожиданно, самый быстрый вариант выглядит так:
Результаты моего лэптопа — https://files.rsdn.org/5743/TestUnescape.UnescapeTests-report.html.
За единицу взят предыдущий победитель: 7601511.1
N = количество повторов (в оригинале — 2000000, я сократил).
Scale — это коэффициент уменьшения плотности спецсимволов. В оригинале их напихано очень часто; я проверял, как зависит производительность от их частоты. В пределе, при очень больших Scale, в строке вообще не встречается ни \ ни n, и алгоритм вырождается в тупое копирование строки. При scale = 1 частоты совпадают с исходными.
Вот, собственно, код инициализации:
Понятно, что по соображениям воспроизводимости Random инициализируется константой. (42).
Неожиданно, самый быстрый вариант выглядит так:
AVXUnescape() | |
| |
Результаты моего лэптопа — https://files.rsdn.org/5743/TestUnescape.UnescapeTests-report.html.
За единицу взят предыдущий победитель: 7601511.1
N = количество повторов (в оригинале — 2000000, я сократил).
Scale — это коэффициент уменьшения плотности спецсимволов. В оригинале их напихано очень часто; я проверял, как зависит производительность от их частоты. В пределе, при очень больших Scale, в строке вообще не встречается ни \ ни n, и алгоритм вырождается в тупое копирование строки. При scale = 1 частоты совпадают с исходными.
Вот, собственно, код инициализации:
UnescapeTests() | |
| |
Понятно, что по соображениям воспроизводимости Random инициализируется константой. (42).
Re: 5 вариантов unescape - угадайте какой самый быстрый (нео
Здравствуйте, Shmj, Вы писали:
Неожиданно, самый быстрый вариант выглядит так:
Результаты моего лэптопа — https://files.rsdn.org/5743/TestUnescape.UnescapeTests-report.html.
За единицу взят предыдущий победитель: https://rsdn.org/forum/dotnet/7601511.1
N = количество повторов (в оригинале — 2000000, я сократил).
Scale — это коэффициент уменьшения плотности спецсимволов. В оригинале их напихано очень часто; я проверял, как зависит производительность от их частоты. В пределе, при очень больших Scale, в строке вообще не встречается ни \ ни n, и алгоритм вырождается в тупое копирование строки. При scale = 1 частоты совпадают с исходными.
Вот, собственно, код инициализации:
Понятно, что по соображениям воспроизводимости Random инициализируется константой. (42).
Неожиданно, самый быстрый вариант выглядит так:
AVXUnescape() | |
| |
Результаты моего лэптопа — https://files.rsdn.org/5743/TestUnescape.UnescapeTests-report.html.
За единицу взят предыдущий победитель: https://rsdn.org/forum/dotnet/7601511.1
Автор: L_G
Дата: 01.12.19
Дата: 01.12.19
N = количество повторов (в оригинале — 2000000, я сократил).
Scale — это коэффициент уменьшения плотности спецсимволов. В оригинале их напихано очень часто; я проверял, как зависит производительность от их частоты. В пределе, при очень больших Scale, в строке вообще не встречается ни \ ни n, и алгоритм вырождается в тупое копирование строки. При scale = 1 частоты совпадают с исходными.
Вот, собственно, код инициализации:
UnescapeTests() | |
| |
Понятно, что по соображениям воспроизводимости Random инициализируется константой. (42).