Ошибки, баги, вопросы - страница 2161
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Я объяснил почему. Оптимизации математики девяностых годов уже не работают.
Но вы продолжаете делать следующие утверждения на основе реально замусоренного кода. Заводомо ошибочные.
На таком уровне технической [не]чистоты я не буду обсуждать вопросы.
Я не понимаю о какой оптимизации математики Вы говорите. И я не делал никаких утверждений, а лишь задаюсь вопросом - каков источник тормозов.
Где в этом изначальном коде замусоренность и оптимизация?
Можно использовать этот более универсальный код, но благодаря использования циклов и массивов скорость формирования кадра изображения снижается почти в два раза:
Оптимизация математики: попытка использовать массивы вместо sqrt.
Вы не видите замусоренности и в этом корень непонимания правил тестирования производительности. Если тестируете precalculated array vs calculation, то нужно убрать все лишнее. Абсолютно все лишнее.
Утверждений вы сделали массу. Нужно уметь читать тексты со стороны получателя и очищая их от нерабочих защит автора.
Оптимизация математики: попытка использовать массивы вместо sqrt.
Да Бог с этим sqrt. Я уже понял, что в случае именно с этой функцией смысла в этом нет. Что плохого в попытке? Зато теперь я это знаю.
И, кстати, в этом же примере использование массива h[] дает приличный выйгрыш в скорости вместо использования sin() .
Вопрос то уже в другом:
Почему при использовании доступа к ячейкам большого массива происходит увеличение время расчета кадра изображения в разы, когда ожидалось лишь на несколько процентов?
Вы не видите замусоренности и в этом корень непонимания правил тестирования производительности. Если тестируете precalculated array vs calculation, то нужно убрать все лишнее. Абсолютно все лишнее.
Вы знаете, Ренат, получить от Вас оплеуху совсем не стыдно, а даже можно счесть за честь.
В моем понимании мусор - это что-то лишнее, что можно и нужно убрать. Но в данном случае там нечего убирать, иначе код перестанет работать.
Я не тестирую "precalculated array vs calculation", а анализирую скорость формирования кадра.
Да и тестирования в моем случае никакого не требуется, потому как на моем слабом ноуте и без тестирования видна разница между 25 кадрами в секунду и 6 кадрами в секунду.
Утверждений вы сделали массу. Нужно уметь читать тексты со стороны получателя и очищая их от нерабочих защит автора.
Я лишь сделал пару предположений, но не утверждений:
- "Логично предположить, что считывание из массива SQRT[x] выполняется быстрее, чем функция sqrt(x)."
- "Можно предположить, что компилятор каким-то странным образом осуществляет доступ к большому массиву и на каждом витке цикла словно "забывает" о массиве и каждый раз проводит свою какую-то служебную индексацию."
Но я все же рискну сделать утверждение по причине того, что я хоть и программист-самоучка, но самоучка с большим стажем и кое-что понимаю в процессах, происходящих внутри процессора, т.к было время когда моей любимой программой была Numega SoftIce, благодаря которой я перелопатил тонны чужого кода на уровне ассемблера.
- Уверяю Вас, что в вашем компиляторе сидит алгоритмический косяк в части доступа к массивам, (возможно он проявляется лишь при достаточно большом массиве), который ваша команда легко найдет, если приложит вектор усилия в этом направлении. И мой пример вам в помощь.
Могу даже поспорить. ))
Когда Вы в цикле перебираете таблицу, при каждом следующем обращении, она с большой вероятностью находится в кэше процессора. Поэтому и работает быстрее.
Если же между обращениями есть какой-то код, то скорее всего будет промах кэша. Этим же объясняется разница в работе с большой и маленькой таблицей.
Кроме того существуют и другие неочевидные случаи. Поэтому тестировать надо окончательный неупрощённый вариант кода.
Ребят подскажите как в шаблонах функций определить что вызвана функция с типом enum ???
enum - это целочисленное перечисление.
Если в шаблоне функции есть
EnumToString();
Возникают проблемы...
Если в шаблоне функции есть
EnumToString();
Возникают проблемы...
Пример нужен.
я сделал перегрузку одной из которых стал шаблон...
так я смог разделить мух от котлет...
я сделал перегрузку одной из которых стал шаблон...
так я смог разделить мух от котлет...