Клубове Дир.бг
powered by diri.bg
търси в Клубове diri.bg Разширено търсене

Вход
Име
Парола

Клубове
Dir.bg
Взаимопомощ
Горещи теми
Компютри и Интернет
Контакти
Култура и изкуство
Мнения
Наука
Политика, Свят
Спорт
Техника
Градове
Религия и мистика
Фен клубове
Хоби, Развлечения
Общества
Я, архивите са живи
Клубове Дирене Регистрация Кой е тук Въпроси Списък Купувам / Продавам 04:08 03.06.24 
Компютри и Интернет
   >> Програмисти
*Кратък преглед

Страници по тази тема: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | (покажи всички)
Тема Скорост на ассемблер срещу Цнови  
Автор grg (минаващ)
Публикувано10.12.11 22:38



Моето мнение е че асемблера е значително по бырз

Компилирах с "gcc -o3 -S" следния C код:

double f(double m[3][3])
{
int i,j;
double r=0.0,a;
for(i=0; i<3; i++)
{
a=1.0;
for(j=0; j<3; j++)
a=a*m[j]*m[j];
r=r+a;
}
return r;
}

Кодът, който GCC генерира, на максимална оптимизация, е такъв, че лесно мога да го напиша на ассемблер да е 5-6 пъти по бърз. И да отбележа, въпреки че вътрешния цикъл има само 3 итерации, не го е "унролнал". Прави адресни изчисления със четене на i, j и адреса на м от памет (без да ги държи в регистри). А някои усилено спорят, че е свръх сложно за човек да бие C компилaтор по производителност.

Редактирано от grg на 11.12.11 01:39.



Тема Re: Скорост на ассемблер срещу Ц - грыматиканови [re: grg]  
Автор Naki (Company PC Guy)
Публикувано10.12.11 22:53



Интересно, отде извади тази буква?

На моята клавиатурна подредба (фонетик) я няма. "Бырз" не е, такава буква в българския няма - пише се със Ъ.
Иначе може би си прав - Dev C++ какво дава? Microsoft C++?
Майка ми е асемблер програмист, пише за Пик-ове.


Редактирано от Naki на 10.12.11 22:54.



Тема аз на асемблер бих го написал така: NOPнови [re: grg]  
Автор ~@!$^%*amp;()_+ (целия горен ред)
Публикувано10.12.11 23:08



e може би трябва да върна 0 за r



--------------------------------
for(i=0; i++; i<=3)

това чудо изскача още преди първата итерация

Редактирано от ~@!$^%*amp;()_+ на 10.12.11 23:51.



Тема Re: Скорост на ассемблер срещу Цнови [re: grg]  
Автор BlGBUGEX (нерегистриран)
Публикувано10.12.11 23:31



Не можеш! Първо мериш, после се изрязваш. Тва е правилото на успешния трол.



Тема Re: Скорост на ассемблер срещу Цнови [re: grg]  
Автор grg (минаващ)
Публикувано11.12.11 00:26



Вярно имам грешка. Ще я изправя и ще видя пак.

Ето новия код:

double f(double m[3][3])
{
int i,j;
double r=0.0,a;
for(i=0; i<3; i++)
{
a=1.0;
for(j=0; j<3; j++)
a=a*m[j]*m[j];
r=r+a;
}
return r;
}

Коментара за скоростта пак е в сила за коректния код.
Други компилатори няма да инсталирам само за да пробвам това.

Редактирано от grg на 11.12.11 00:31.



Тема Re: Скорост на ассемблер срещу Цнови [re: grg]  
Автор Naki (Company PC Guy)
Публикувано11.12.11 01:01



Редактирай си началния постинг, Дира ти дава право до 6 часа...




Тема Re: Скорост на ассемблер срещу Цнови [re: grg]  
Автор BlGBUGEX (нерегистриран)
Публикувано11.12.11 02:18



Истинските програмисти дето владеят силата (асемблера) могат да пишат перфектно на С. При тебе всичко приключи с първия ти пост. Като падащ руснак за който руското посолство твърди че е извънземен космически кораб. Обаче всички виждат че е падащ руснак. Тука идва момента, руснака да изкара огън или нещо по-впечатляващо ( в твоя случай код ) от задника си за да посее съмнения в публиката.



Тема Re: Скорост на ассемблер срещу Цнови [re: grg]  
Автор muletar (член)
Публикувано11.12.11 03:35



По-бърз е. Направи един UI на асемблер да видиш каква е бързина.





Тема Re: Скорост на ассемблер срещу Цнови [re: grg]  
Автор | (>[2] /dev/null)
Публикувано11.12.11 05:42



Нещо си оплескал. Gcc напълно unroll-ва и двата цикъла.



f:
.LFB0:
.cfi_startproc
movsd (%rdi), %xmm1
movsd 8(%rdi), %xmm0
mulsd %xmm1, %xmm1
movsd 32(%rdi), %xmm2
mulsd %xmm0, %xmm1
mulsd %xmm0, %xmm1
movsd 16(%rdi), %xmm0
mulsd %xmm0, %xmm1
mulsd %xmm0, %xmm1
movsd 24(%rdi), %xmm0
mulsd %xmm0, %xmm0
addsd .LC0(%rip), %xmm1
mulsd %xmm2, %xmm0
mulsd %xmm2, %xmm0
movsd 40(%rdi), %xmm2
mulsd %xmm2, %xmm0
mulsd %xmm2, %xmm0
movsd 56(%rdi), %xmm2
addsd %xmm0, %xmm1
movsd 48(%rdi), %xmm0
mulsd %xmm0, %xmm0
mulsd %xmm2, %xmm0
mulsd %xmm2, %xmm0
movsd 64(%rdi), %xmm2
mulsd %xmm2, %xmm0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
ret
.cfi_endproc


The last good thing written in C was Franz Schubert's Symphony No. 9.

Тема High Level Assemblyнови [re: grg]  
Автор rossen genchev (непознат )
Публикувано11.12.11 09:27





изглежда добре
--------------------------------------------------------------------------------
program t;
#include("switch.hhf")
begin t;
switch( eax );
case( 1 )
switch( ebx );
case( 100 )
mov( 100, ebx );
case( 101 )
mov( 101, ebx );
default
mov( 0, ebx );
endswitch;
case( 2 )
mov( 2, eax );
case( 3 )
mov( 3, eax );
default
mov( 0, eax );
endswitch;
end t;




Страници по тази тема: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | (покажи всички)
*Кратък преглед
Клуб :  


Clubs.dir.bg е форум за дискусии. Dir.bg не носи отговорност за съдържанието и достоверността на публикуваните в дискусиите материали.

Никаква част от съдържанието на тази страница не може да бъде репродуцирана, записвана или предавана под каквато и да е форма или по какъвто и да е повод без писменото съгласие на Dir.bg
За Забележки, коментари и предложения ползвайте формата за Обратна връзка | Мобилна версия | Потребителско споразумение
© 2006-2024 Dir.bg Всички права запазени.