#ryujit — Public Fediverse posts
Live and recent posts from across the Fediverse tagged #ryujit, aggregated by home.social.
-
Бенчмаркая Sum: ускорил циклом — замедлил в ×4,7
Уважаемые читатели, в этой статье я хочу рассказать о том, что происходит внутри values.Sum() в современном .NET — там нашлись векторные инструкции, контроль переполнения и список процессоров, которым рантайм намеренно ограничивает ширину вектора, — и представить свои выводы. В прошлых статьях серии самописные циклы уже проигрывали BCL в поиске по строке , JIT сам выкидывал проверки границ , а foreach прятал аллокации . Тут случай интереснее: values.Sum() — это LINQ, который при оптимизации первым делом меняют на цикл.
https://habr.com/ru/articles/1060470/
#benchmarkdotnet #linq #sum #simd #avx512 #векторизация #производительность #jit #ryujit #overflowexception
-
Бенчмаркая Sum: ускорил циклом — замедлил в ×4,7
Уважаемые читатели, в этой статье я хочу рассказать о том, что происходит внутри values.Sum() в современном .NET — там нашлись векторные инструкции, контроль переполнения и список процессоров, которым рантайм намеренно ограничивает ширину вектора, — и представить свои выводы. В прошлых статьях серии самописные циклы уже проигрывали BCL в поиске по строке , JIT сам выкидывал проверки границ , а foreach прятал аллокации . Тут случай интереснее: values.Sum() — это LINQ, который при оптимизации первым делом меняют на цикл.
https://habr.com/ru/articles/1060470/
#benchmarkdotnet #linq #sum #simd #avx512 #векторизация #производительность #jit #ryujit #overflowexception
-
Бенчмаркая Sum: ускорил циклом — замедлил в ×4,7
Уважаемые читатели, в этой статье я хочу рассказать о том, что происходит внутри values.Sum() в современном .NET — там нашлись векторные инструкции, контроль переполнения и список процессоров, которым рантайм намеренно ограничивает ширину вектора, — и представить свои выводы. В прошлых статьях серии самописные циклы уже проигрывали BCL в поиске по строке , JIT сам выкидывал проверки границ , а foreach прятал аллокации . Тут случай интереснее: values.Sum() — это LINQ, который при оптимизации первым делом меняют на цикл.
https://habr.com/ru/articles/1060470/
#benchmarkdotnet #linq #sum #simd #avx512 #векторизация #производительность #jit #ryujit #overflowexception
-
Бенчмаркая поиск по строке: самописные циклы проигрывают от ×14 до ×154
Уважаемые читатели, в этой статье я хочу рассказать про поиск по строке и представить свои выводы. Началось с оптимизации: сравнил поиск символа циклом со string.IndexOf — и получил разницу в разы. Заодно выяснилось, что серверный Xeon с AVX-512 в этой задаче медленнее игрового десктопа с AVX2. Ниже разбор обоих фактов с дизасмом и замерами. Будет четыре истории, и в каждой — вопрос, на который я искал ответ:
https://habr.com/ru/articles/1059624/
#simd #avx2 #avx512 #benchmarkdotnet #indexof #searchvalues #ryujit #дизасм #производительность #бенчмарк
-
Бенчмаркая поиск по строке: самописные циклы проигрывают от ×14 до ×154
Уважаемые читатели, в этой статье я хочу рассказать про поиск по строке и представить свои выводы. Началось с оптимизации: сравнил поиск символа циклом со string.IndexOf — и получил разницу в разы. Заодно выяснилось, что серверный Xeon с AVX-512 в этой задаче медленнее игрового десктопа с AVX2. Ниже разбор обоих фактов с дизасмом и замерами. Будет четыре истории, и в каждой — вопрос, на который я искал ответ:
https://habr.com/ru/articles/1059624/
#simd #avx2 #avx512 #benchmarkdotnet #indexof #searchvalues #ryujit #дизасм #производительность #бенчмарк
-
Бенчмаркая поиск по строке: самописные циклы проигрывают от ×14 до ×154
Уважаемые читатели, в этой статье я хочу рассказать про поиск по строке и представить свои выводы. Началось с оптимизации: сравнил поиск символа циклом со string.IndexOf — и получил разницу в разы. Заодно выяснилось, что серверный Xeon с AVX-512 в этой задаче медленнее игрового десктопа с AVX2. Ниже разбор обоих фактов с дизасмом и замерами. Будет четыре истории, и в каждой — вопрос, на который я искал ответ:
https://habr.com/ru/articles/1059624/
#simd #avx2 #avx512 #benchmarkdotnet #indexof #searchvalues #ryujit #дизасм #производительность #бенчмарк
-
Бенчмаркая проверки границ: фикс, который шёл 8 лет, и проверка, которая жива до сих пор
Уважаемые читатели, в этой статье я хочу рассказать о проверках границ массива и представить свои выводы. Каждое обращение arr[i] обязано проверить индекс, иначе IndexOutOfRangeException — а JIT старается эти проверки убирать, когда может доказать, что выход за границы невозможен. Я взял несколько обычных циклов и посмотрел в машинный код на .net 8, 9, 10 и 11 одновременно. Результат разложился по версиям так, как я не ожидал. Будет три истории:
https://habr.com/ru/articles/1059040/
#benchmarkdotnet #JIT #bounds_check #проверка_границ #RyuJIT #NET_11 #дизассемблирование #производительность #оптимизация #массивы
-
Бенчмаркая проверки границ: фикс, который шёл 8 лет, и проверка, которая жива до сих пор
Уважаемые читатели, в этой статье я хочу рассказать о проверках границ массива и представить свои выводы. Каждое обращение arr[i] обязано проверить индекс, иначе IndexOutOfRangeException — а JIT старается эти проверки убирать, когда может доказать, что выход за границы невозможен. Я взял несколько обычных циклов и посмотрел в машинный код на .net 8, 9, 10 и 11 одновременно. Результат разложился по версиям так, как я не ожидал. Будет три истории:
https://habr.com/ru/articles/1059040/
#benchmarkdotnet #JIT #bounds_check #проверка_границ #RyuJIT #NET_11 #дизассемблирование #производительность #оптимизация #массивы
-
Бенчмаркая проверки границ: фикс, который шёл 8 лет, и проверка, которая жива до сих пор
Уважаемые читатели, в этой статье я хочу рассказать о проверках границ массива и представить свои выводы. Каждое обращение arr[i] обязано проверить индекс, иначе IndexOutOfRangeException — а JIT старается эти проверки убирать, когда может доказать, что выход за границы невозможен. Я взял несколько обычных циклов и посмотрел в машинный код на .net 8, 9, 10 и 11 одновременно. Результат разложился по версиям так, как я не ожидал. Будет три истории:
https://habr.com/ru/articles/1059040/
#benchmarkdotnet #JIT #bounds_check #проверка_границ #RyuJIT #NET_11 #дизассемблирование #производительность #оптимизация #массивы
-
Add scalar evolution analysis and do IV widening based on it
-
Add scalar evolution analysis and do IV widening based on it
-
Add scalar evolution analysis and do IV widening based on it
-
Add scalar evolution analysis and do IV widening based on it
-
Add scalar evolution analysis and do IV widening based on it