DDR Тьюринга
Oct. 1st, 2016 10:25 amЦикл оптимизации скорости программы завершился результатом типа "плевать на алгоритмы, лишь бы памяти мало расходовалось". Представление данных через std::string с сжатием/раздвижением по необходимости оказалось заметно выгоднее красиво разложенного по полям с инлайнингом содержимого.
Что RAM это сейчас для процессора разновидность внешнего устройства, медленного и тоскливого - я теоретически знал, но вот прощупать это настолько на практике довелось только сейчас.
Что RAM это сейчас для процессора разновидность внешнего устройства, медленного и тоскливого - я теоретически знал, но вот прощупать это настолько на практике довелось только сейчас.
no subject
Date: 2016-10-01 08:17 am (UTC)Вот тут об этом: https://habrahabr.ru/post/309394/
У меня тоже интуиция в этом направлении плохо работает - всё время кажется, что если всё помещается в RAM, то дальнейшая оптимизация особого выигрыша уже не даст.
no subject
Date: 2016-10-01 08:59 am (UTC)И в политике работы с памятью. Много бегать в коротком участке на порядки(!) выгоднее, чем прыгать по рассредоточенным данным. В реальном приложении это, конечно, смазывается, но всё равно получаются заметные цифры. Причём когда perf stat показывает снижение stalled-cycles-backend всего лишь где-то с 42% до 39% это уже заметно.
> У меня тоже интуиция в этом направлении плохо работает
Ну, cache-friendly и даже cache-conscious это уже хорошо начатые направления разработки.
> Вот тут об этом: https://habrahabr.ru/post/309394/
Да, там критиковали, но я бы поддержал общий посыл.
no subject
Date: 2016-10-02 08:35 am (UTC)no subject
Date: 2016-10-02 09:10 am (UTC)Ещё есть ориентация на "колоночные" БД (time series) со сходным результатом.
> Правда, на алгоритмы еще не плевать.
Ну, я утрировал. Но тут таки алгоритмической сложности считай не было.