Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Я тут до этого ещё одно сообщение оставлял, но его удалили. Там была интересная ссылка https://habr.com/en/post/423575/. Вот такой он маркетинг прогресс.
Если вы не можете грамотно организовать хранения данных, то может кодить это не ваше? Разбейте большой массив на массивы с одинаковыми требованиями по выравниванию. Придумываете проблему на ровном месте.
Я то умею грамотно организовывать хранение данных, ибо не использую выравнивание. А свои костыли сами используйте. Проблему как-раз придумали вы в этой ветке, и перекидываете с больной головы на здоровую. У всех всё прекрасно работает.
Речь то о другом - используют любителей прогресса в хвост и гриву.
Ну-ну... Пока мы видим, что в хвост и гриву имеют только вас, с вашим архаичным процом )
Злой какой-то, наверное велосипеда нет.
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Библиотеки: Virtual
fxsaber, 2024.11.13 16:57
Заметил зависимость производительности библиотеки от длины статического массива.
Объяснить такую разницу (> 10%) не получается, кроме как странностями связки компилятора и конфигурации машины.
Кратко, увеличили массив и получили бесплатное ускорение.
Набросал исследовательский код.
В общем, беру статические массивы с разным sizeof его элементов. И замеряю время работы с ними.
Ниже промежуточные результаты.
Длина статического массива.
AMOUNT = 70.
AMOUNT = 80.
Почему длина массива 70 дает мгновенное выполнение - загадка. Выглядит, как баг.
sizeof-элемента массива.
AMOUNT = 200.
AMOUNT = 300.
Воспроизводимое замедление в 2-3 раза для массивов с sizeof = 293.
Однозначно, что для скорости имеет смысл добавлять структуры до оптимальных по производительности размеров. Потому что можно запросто просесть в производительности, если нарваться на неудачный размер, как в примере выше.
AVX2 работает медленнее, чем AVX. При этом у первого слабее просидание производительности для sizeof=293, чем у второго.
Длина статического массива.
Увеличили статический массив в два раза, и он стал копироваться почти в два раза быстрее!
У тебя UB. Ты никак не инициализируешь поле i.
Компилятор может доказать, что никогда нет передачи ссылки на массив в функцию, он у тебя всегда создается как xvalue и создается с default конструктором.
На основании этого, при инстанцировании шаблона, он имеет право вообще функцию не создавать, а все заинлайнить, а далее, учитывая UB, все свести к аналогу return sizeof(T)
У тебя UB. Ты никак не инициализируешь поле i.
Проверял с инициализацией - аналогично.
Компилятор может доказать, что никогда нет передачи ссылки на массив в функцию, он у тебя всегда создается как xvalue и создается с default конструктором.
На основании этого, при инстанцировании шаблона, он имеет право вообще функцию не создавать, а все заинлайнить, а далее, учитывая UB, все свести к аналогу return sizeof(T)
Распечатывал сумму - все правильно.
На скорость выполнения эти оба добавления не влияют. Сумму возвращают одну и ту же. Только для AMOUNT=50 выполнение идет в 500 раз быстрее, чем для AMOUNT = 100.