Отговори на тема  [ 5 мнения ] 
кви са ви наблюденията за оптимизацията в С компилаторите? 
Автор Съобщение
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Юли 24, 2005 10:28 am
Мнения: 2658
Мнение кви са ви наблюденията за оптимизацията в С компилаторите?
гледам сега кода който ми е изгенерирал С30, доста е зле. свикнал съм с микрософтския компилер, дето съм се отказал да пробвам да го бия на асемблер, обаче тоя С30 е далеч от класата му.

п.с. микрософтсия само един път съм го виждал да се излага - код от типа на
f*f*f*f*f*f*f*f
го прави буквално, със 7 умножения, а има много по-бърз начин.


Съб Фев 17, 2007 1:49 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Ное 21, 2004 11:31 pm
Мнения: 10088
Мнение 
ако ти трябва наистина оптимизиран или малък код - пиши си на асемблер
на мен понякога ми се е налагало да вадя отделни процедури в отделни файлове и да ги компилирам с различни флагове за оптимизация. рядко.

ама да пишеш f*f*f*f*f*f*f или i+++++++++++++++++ е проява на изключителен стил :roll:

апропо, как го виждаш онова с многото умножения освен с много умножения (особено ако приемем, че f значи 'float')?


Съб Фев 17, 2007 10:51 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Юли 24, 2005 10:28 am
Мнения: 2658
Мнение 
ДедоБоре написа:
ама да пишеш f*f*f*f*f*f*f или i+++++++++++++++++ е проява на изключителен стил :roll:

апропо, как го виждаш онова с многото умножения освен с много умножения (особено ако приемем, че f значи 'float')?


вдигането на 8ма го виждам с три умножения, вместо 7 :)
и не разбирам какво му е на стила? като ти трябва нещо си на 8ма, ше умножаваш, де ше идеш. може да ползваш функция за степен, но тя е изключително бавна. дори exp(a*log(b)) бачка по-бързо, интересно защо. вероятно защото функцията за степен прави разни досадни проверки, от рода на дали ако основата е отрицателна число, е цяло, та да знае да дава ли грешка или да смята.


Съб Фев 17, 2007 11:58 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Съб Юли 22, 2006 9:50 pm
Мнения: 1638
Мнение 
Доколкото си спомням математиката exp(а*log(b))=exp(log(b)^a) :wink: така че зависи от размерността на а.Пробвай същата функция със а>=8 и сравнено със f*f*f*f*f*f*f май ще е едно и също


Нед Фев 18, 2007 12:10 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Юли 24, 2005 10:28 am
Мнения: 2658
Мнение 
изравняват се някъде при а около 100
и то при положение че умножаваш толкова пъти, колкото и степента. на практика можеш да минеш със логаритмична сложност (умножения на брой лог(а)), тогава няма да се изравнят никога, понеже ще препълниш флоата преди това да стане.


Нед Фев 18, 2007 12:31 am
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 5 мнения ] 

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 2 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни