Насколько эффективно работают Оптимизаторы кода? например Visual Studio 2013 ???
Стоит ли заморачиваться с заменой деления/умножения на 2, заменяя их на сдвиг на 1 бит влево/вправо??
Может есть некоторые приёмы которые нужно делать??
например при умножении всех элементов массива byte[10000] скажем на 8. можно создать массив byte[256] в котором номер индекса это значение переменной которую нужно умножить а значение массива по этому индексу это результат умножения. В итоге операцию умножения можно поменять на более быстрое сложение . Или оптимизаторы могут тут оптимизировать код???
Другие языки программирования и технологии
Можно ли доверять Оптимизаторам кода??? Visual Studio 2013
Замена деления умножением. Да стоит заморачиваться. Если бы вы знали как произходило деление вначале, а с того момента не многое изменилось, то поняли бы что стоит. Первоначально деление происходило тупо отниманием от делимого, делитель и прибавлением единицы к частному до тех пор пока делитель не станет меньше делителя.
while(делимое>делителя)
{
частное++;
делимое-=делитель;
}
Это для целочисленных операций, но я думаю что с fpu похожая схема. Конечно сейчас алгоритмы более продуктивные, но все же основываются на отнимании.
while(делимое>делителя)
{
частное++;
делимое-=делитель;
}
Это для целочисленных операций, но я думаю что с fpu похожая схема. Конечно сейчас алгоритмы более продуктивные, но все же основываются на отнимании.
Oleg Korovin
Опять же для оптимизации главное найти участки кода которые "тормозят". В циклах надо избавляться от лишнего ну и так далее.
Oleg Korovin
Когда то давно читал статейку, как человек начал заниматься оптимизацией т. к. скорость программы была маленькой. Он уже вроде бы все под чистую вылизал, а скорость увеличил лишь на доли секунды, пока не обнаружил что скорость вывода символов на экран и тормозит приложение. Переписав по другому он достиг приемлемых результатов. Могу в чем то ошибаться, но суть осталась. Суть в том что бы найти участок (ки) кода "тормозящие" приложение, а не тупо все оптимизировать. Ну а потом, если будет желание, то оптимизировать и остальное.
если у и тебя эти "деления на 2" происходят в циклах по несколько миллионов раз, и ждать вечно нет желания, то есть смысл задуматься об оптимизации
но если ты так оптимизируешь, что уже спустя 5 минут после написания коде не в состоянии понять написанное тобой, то на кой хрен оно нужно? у тебя оптимизация кода сожрала оптимизацию твоего труда.
но если ты так оптимизируешь, что уже спустя 5 минут после написания коде не в состоянии понять написанное тобой, то на кой хрен оно нужно? у тебя оптимизация кода сожрала оптимизацию твоего труда.
Идите в такой последовательности:
1) Оптимизируйте алгоритм, возможно, что исключите такие вычисления, или минимизируете, это главное средство. Если вычисления математические, то часто можно преобразовать формулы, классический пример: быстрое преобразование Фурье.
2) Если пишете на C#, или Oxygen, то вынесите массивные вычисления в DLL, а их пишите на C++, или Delphi, как выше посоветовали, на крайняк в ассемблере.
3) Если пишете на C или C++, то сделайте ассемблерный модуль, с вычислительными функциями.
Тупая замена: деления/умножения на сдвиги мало что даст. А оптимизация в VS, для С++ ,ИМХО нормальная, лучше чем в Delphi например.
1) Оптимизируйте алгоритм, возможно, что исключите такие вычисления, или минимизируете, это главное средство. Если вычисления математические, то часто можно преобразовать формулы, классический пример: быстрое преобразование Фурье.
2) Если пишете на C#, или Oxygen, то вынесите массивные вычисления в DLL, а их пишите на C++, или Delphi, как выше посоветовали, на крайняк в ассемблере.
3) Если пишете на C или C++, то сделайте ассемблерный модуль, с вычислительными функциями.
Тупая замена: деления/умножения на сдвиги мало что даст. А оптимизация в VS, для С++ ,ИМХО нормальная, лучше чем в Delphi например.
"Преждевременная оптимизация - корень всех зол. " (Дональд Кнут)
Чтобы проверить, получилось ли оптимизировать код по быстродействию, есть System.Diagnostics.Stopwatch
Берете и считаете, сколько мсек требовалось на исполнение кода до оптимизации и сколько - после.
Насчет оптимизации по ОЗУ - тупо диспетчером задач. Пара сотен КБ некритично, а серьезные изменения заметите.
Если в данном приложении так критична производительность, то пишите его не на C#, а на C++, Delphi, PureBasic. Одним этим вы сэкономите буквально миллионы байт ОЗУ.
Чтобы проверить, получилось ли оптимизировать код по быстродействию, есть System.Diagnostics.Stopwatch
Берете и считаете, сколько мсек требовалось на исполнение кода до оптимизации и сколько - после.
Насчет оптимизации по ОЗУ - тупо диспетчером задач. Пара сотен КБ некритично, а серьезные изменения заметите.
Если в данном приложении так критична производительность, то пишите его не на C#, а на C++, Delphi, PureBasic. Одним этим вы сэкономите буквально миллионы байт ОЗУ.
Бахтияр М
>>"Преждевременная оптимизация - корень всех зол. " (Дональд Кнут) >>
Вот она! Стилистическая фишка, создающая новый образ, не похожий на ВЗ!
Цитаты из классиков! :)
Вот она! Стилистическая фишка, создающая новый образ, не похожий на ВЗ!
Цитаты из классиков! :)
Кеслер Коля
> так критична производительность, то пишите его ...PureBasic.
Производительность важна для вычислительных задач. На вычислительных задачах PureBasic сливает даже C#.
http://benchmarksgame.alioth.debian.org/u32/program.php?test=spectralnorm&lang=csharp -- при N = 5500 на моем ноуте считает около 10.5 секунд
Этот же код, тупо без изменений переписанный на PB
http://pastebin.com/QJ1fia4a -- при N = 5500 время > 24 секунд
http://benchmarksgame.alioth.debian.org/u32/program.php?test=spectralnorm&lang=cint -- сишка 8.5 секунд.
Производительность важна для вычислительных задач. На вычислительных задачах PureBasic сливает даже C#.
http://benchmarksgame.alioth.debian.org/u32/program.php?test=spectralnorm&lang=csharp -- при N = 5500 на моем ноуте считает около 10.5 секунд
Этот же код, тупо без изменений переписанный на PB
http://pastebin.com/QJ1fia4a -- при N = 5500 время > 24 секунд
http://benchmarksgame.alioth.debian.org/u32/program.php?test=spectralnorm&lang=cint -- сишка 8.5 секунд.
Кеслер Коля
Как в анекдоте про дворника с бородой: ну станет он вставлять цитаты классиков, но незнание матчасти, стремление написать херню не имеющую отношения к вопросу, попытки выдать собственные идиотские измышления за истину в последней инстанции куда денутся?
Типа он Кнута читал? Он же постоянно пишет, что читать вредно, а тут цитаты классиков!
Типа он Кнута читал? Он же постоянно пишет, что читать вредно, а тут цитаты классиков!
Похожие вопросы
- Здравствуйте товарищи программисты хотел спросить. VIsual studio 2022 или Visual Studio Code
- Microsoft Visual Studio 2010 или 2013? Microsoft Visual Studio какая версия лучше, платная ли программа?
- Подскажите с чего начать изучение Visual Studio ???(ещё вопросы в метках...)
- Зачем нужен Visual Studio Code?
- Как в visual studio 2012 выровнять текст кода?
- как в Microsoft Visual Studio 2010 в C# в системе счисления, перевести в десятеричную? Как дополнить код? Помогите плиз
- Visual Studio или MASM
- MS Visual Studio+русские переменные
- Visual studio c++ помогите пожалуста!!!
- помогите сделать задание в Microsoft Visual Studio