Насколько мал должен быть алгоритм для хранения в кеше?(Нужна подсказка) - PullRequest
1 голос
/ 21 июля 2011

Я делаю генератор шахматных ходов, у меня есть возможность заменить циклы while / for на множество «операторов if», и мне было интересно, улучшит ли это ~ 3000 строк производительность, как в теории, или просто сделает алгоритм слишком велик для хранения в кэше процессора

Я знаю, что это зависит от размера кэша (я получил AMD Phenom 8650 Triple Core 2.3), но у меня действительно нет IDEA

Ответы [ 2 ]

2 голосов
/ 21 июля 2011

Прежде всего, у вас, вероятно, есть несколько МБ кеша, поэтому я сомневаюсь, что он заполнит весь кеш.

Кроме того, процессор занят многими вещами помимо вашего кода, поэтому я сомневаюсьвесь кеш будет использоваться только для вашего кода.

Кроме того, перемещение между оперативной памятью (возможно, у вас есть несколько ГБ) к кешу довольно пренебрежимо.

Итак, удалениецикл (если это цикл постоянной длины) и его замена на явные строки должны дать вам улучшение.
Количество или процент улучшения действительно больше зависят от языка и компилятора, чем от аппаратного обеспечения в этом случае.
Обратите внимание, что существуют языки и ситуации, в которых это может занять больше времени (например, языки интерпретации)

Отказ от ответственности :
Этот тип оптимизации используется не часто, главным образом потому, чтоне улучшается (обычно).
Попробуйте поискать другие места (или другие способы), чтобы улучшить.

0 голосов
/ 21 июля 2011

Не должно быть никакой разницы в ожидании увеличения вашего кода и увеличения объема памяти.Например, если будет использоваться последний if, он будет похож на последнюю итерацию в цикле while ... Однако вы все равно можете использовать что-то, например, прерывание или прерывание цикла, если выполняется условие, котороеаналогично наличию нескольких циклов if.

Сделайте код быстрее, оптимизировав другие части и профилируя.

...