This media is not supported in your browser
VIEW IN TELEGRAM
«what the fu**?»: самый странный комментарий в игровом коде
Одна строка из Quake III заменяет деление и корень сдвигом битов и магическим числом 0x5f3759df. Покажу на примере, как это работает, и посчитаю погрешность: 3.44% до уточнения и 0.175% после одного шага Ньютона. А кто на самом деле придумал трюк, вы вряд ли угадаете.
https://youtube.com/shorts/oIpqqzNNCHo
Одна строка из Quake III заменяет деление и корень сдвигом битов и магическим числом 0x5f3759df. Покажу на примере, как это работает, и посчитаю погрешность: 3.44% до уточнения и 0.175% после одного шага Ньютона. А кто на самом деле придумал трюк, вы вряд ли угадаете.
https://youtube.com/shorts/oIpqqzNNCHo
❤3👍1🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
Эта функция из 1983 года выглядит как ошибка. Но работает
В 1983 году Том Дафф в Lucasfilm вставил switch прямо внутрь цикла do while, чтобы ускорить копирование. Показываю на примере 11 элементов, как код «проваливается» по веткам case, и привожу цитату из его письма Ритчи и Пайку. Я замерил на C: без оптимизаций трюк быстрее обычного цикла на 40%, с оптимизацией выигрыш всего 13%, а memcpy быстрее в пять раз.
https://www.youtube.com/shorts/jnr3r_7j14w
В 1983 году Том Дафф в Lucasfilm вставил switch прямо внутрь цикла do while, чтобы ускорить копирование. Показываю на примере 11 элементов, как код «проваливается» по веткам case, и привожу цитату из его письма Ритчи и Пайку. Я замерил на C: без оптимизаций трюк быстрее обычного цикла на 40%, с оптимизацией выигрыш всего 13%, а memcpy быстрее в пять раз.
https://www.youtube.com/shorts/jnr3r_7j14w
❤2
В C# наконец появились union-типы
Разбираем C# 15 и .NET 11: union-типы, закрытые иерархии через closed, аргументы в коллекционных выражениях, extension-индексаторы и именованные break и continue.
Разработчики на C# просили размеченные объединения (discriminated unions) почти десять лет. Обсуждение в репозитории языка годами оставалось одним из самых популярных, а команды тем временем писали свои OneOf, Result и иерархии из абстрактных record с бесконечными default: throw. В C# 15, который выходит вместе с .NET 11, союзы наконец становятся частью языка. Вместе с ними приходят закрытые иерархии, аргументы в коллекционных выражениях, extension-индексаторы и именованные break/continue. Разберём, что из этого реально пригодится в коде уже сейчас.
https://uproger.com/csharp-15-union-types/
Разбираем C# 15 и .NET 11: union-типы, закрытые иерархии через closed, аргументы в коллекционных выражениях, extension-индексаторы и именованные break и continue.
Разработчики на C# просили размеченные объединения (discriminated unions) почти десять лет. Обсуждение в репозитории языка годами оставалось одним из самых популярных, а команды тем временем писали свои OneOf, Result и иерархии из абстрактных record с бесконечными default: throw. В C# 15, который выходит вместе с .NET 11, союзы наконец становятся частью языка. Вместе с ними приходят закрытые иерархии, аргументы в коллекционных выражениях, extension-индексаторы и именованные break/continue. Разберём, что из этого реально пригодится в коде уже сейчас.
https://uproger.com/csharp-15-union-types/
❤2