Микроконтролери и електроника
http://mcu-bg.com/mcu_site/

кви са ви наблюденията за оптимизацията в С компилаторите?
http://mcu-bg.com/mcu_site/viewtopic.php?f=3&t=3734
Страница 1 от 1

Автор:  zaphod [ Съб Фев 17, 2007 1:49 pm ]
Заглавие:  кви са ви наблюденията за оптимизацията в С компилаторите?

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

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

Автор:  ДедоБоре [ Съб Фев 17, 2007 10:51 pm ]
Заглавие: 

ако ти трябва наистина оптимизиран или малък код - пиши си на асемблер
на мен понякога ми се е налагало да вадя отделни процедури в отделни файлове и да ги компилирам с различни флагове за оптимизация. рядко.

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

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

Автор:  zaphod [ Съб Фев 17, 2007 11:58 pm ]
Заглавие: 

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

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


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

Автор:  Ки4о [ Нед Фев 18, 2007 12:10 am ]
Заглавие: 

Доколкото си спомням математиката exp(а*log(b))=exp(log(b)^a) :wink: така че зависи от размерността на а.Пробвай същата функция със а>=8 и сравнено със f*f*f*f*f*f*f май ще е едно и също

Автор:  zaphod [ Нед Фев 18, 2007 12:31 am ]
Заглавие: 

изравняват се някъде при а около 100
и то при положение че умножаваш толкова пъти, колкото и степента. на практика можеш да минеш със логаритмична сложност (умножения на брой лог(а)), тогава няма да се изравнят никога, понеже ще препълниш флоата преди това да стане.

Страница 1 от 1 Часовете са според зоната UTC + 2 часа [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/