Автор Тема: Тестване производителност  (Прочетена 2880 пъти)

steef

  • Напреднали
  • *****
  • Публикации: 45
    • Профил
Здравейте ,
Наскоро компилирах xfe с флагове -march=native и -О3 с гцц . Та въпроса ми е как мога да разбера каква е промяната в двоичние код , има ли някакъв софтуер за тестване на производителността на друг софтуер ? А също искам да ви попитам и дали дали процесора ми може да потдържа 64 битова ОС - модела е Е5200 и има Intel® 64  - ето го процесора - http://ark.intel.com/Product.aspx?id=37212&wapkw=(E5200) , ето я технологията - http://www.intel.com/technology/intel64/ . Това същото ли е като АМД64 ?
Активен

gat3way

  • Напреднали
  • *****
  • Публикации: 6050
  • Relentless troll
    • Профил
    • WWW
Re: Тестване производителност
« Отговор #1 -: Apr 16, 2011, 12:14 »
Здравей,

По ред на номерата:

1) промяната в двоичния код можеш да видиш само като я дизасемблираш (примерно с gdb).

При това, обикновено далеч не е толкова лесно гледайки генерираният код, дали е по-оптимален. Инструкциите имат различна латентност и никой не е казал че се изпълнява една инструкция на такт. Освен това има pipelining, освен това силно зависи дали данните се намират в кеша или не и т.н. Много tricky е да видиш примерно че са генерирани по-малко инструкции и да заключиш че това е по-оптимално и се изпълнява по-бързо. Ако беше така, -Os щеше да генерира по-бърз код от -O3 примерно :) Освен това оптимизациите, които прави компилатора далеч не са толкова прости и в много случаи е много трудно да схванеш замисъла.

2) тестването е много относително понятие - това е едно уравнение с прекалено много неизвестни. Доста трудно е да се направи тест, който да изолира повечето неизвестни. В този ред на мисли, разни сайтове като Phoronix имат навика да правят такива спекулативни тестове, които според мен е доста грешно някой да взема прекалено насериозно.

3) Може, това е на практика същото като amd64.

Активен

"Knowledge is power" - France is Bacon

steef

  • Напреднали
  • *****
  • Публикации: 45
    • Профил
Нямах в предвид точно гледане на единиците и нулите  ;D . Иначе с един хекс едитор (е и доста познания по асемблер , reverce en. и свободно време ) съм чук !

Фороникса съм го пробвал , но незнам дали има тестове за произволна програмка - т.е. имаше някакви тестове за апаха , за времето за билдване на определени неща , но не съм видял тестове за програма , която ти посочваш . Мисълта ми е за нещо като time командата - да ти казва времето за изпълнение и още неща , примерно адресирана памет ..... . А то е ясно че няма как да се направи пълен тест , съобразно финкционалностите - всяко нещо си има специфични особености , които няма как да се тестват с унифициран метод . Примерно няма как да тестваш на колко хттп заявки в секунда може да отговори един мп3 плеяр или пък колко кадъра в секунда рендва един мейл клиент . И все пак възможно ли е да се проследи използването на ресурсите (рам , суап , процесорно време , използване на видео картата) като цяло ?

10х за инфото за интел64 !
Активен

gat3way

  • Напреднали
  • *****
  • Публикации: 6050
  • Relentless troll
    • Профил
    • WWW
Re: Тестване производителност
« Отговор #3 -: Apr 16, 2011, 12:55 »
И да може да проследиш какви ресурси заема програмата, в някакъв интервал от време, какво от това? Какъв извод би си направил за производителността на програмата?
Активен

"Knowledge is power" - France is Bacon

steef

  • Напреднали
  • *****
  • Публикации: 45
    • Профил
Re: Тестване производителност
« Отговор #4 -: Apr 16, 2011, 17:15 »
Така като се замисля май си прав - една програма може да използва по-малко ресурси и да рендва по-малко кадъра в секунда (ако е някаква игра примерно) , зависи от алгоритъма на рендване . Добре де , тогава как мога да разбера какво е подобрението ако сложа флаговете за архитектурата и О3 ? И дали е възможно тези флагове да влошат производителността (поне при мозила четох , че не трябва да се пипат , освен ако не познаваш кода много добре) ?

А и още нещо (извинявай ако ставам досаден ) - възможно ли е компилиране на програма , която е писана за 32 битова архитектура , така че да използва пълноценно 64 битов процесор - т.е. дали това трябва да се заложи сорс кода или изцяло е в ръцете на компилатора ?
Активен

gat3way

  • Напреднали
  • *****
  • Публикации: 6050
  • Relentless troll
    • Профил
    • WWW
Re: Тестване производителност
« Отговор #5 -: Apr 16, 2011, 19:15 »
Възможно е също и да ги влошат, зависи от много неща.

Що се отнася до вторият въпрос - в общият случай е работа на компилатора да генерира оптимален код за архитектурата, но в определени случаи може да му се помогне.
Активен

"Knowledge is power" - France is Bacon

clovenhoof

  • Напреднали
  • *****
  • Публикации: 534
  • Distribution: Mac OSX 10.9.2
    • Профил
Re: Тестване производителност
« Отговор #6 -: Apr 16, 2011, 20:45 »
Горе-долу по темата:

Какви profiler-и има в света на linux; като име на по-добрите от тях?
Ще потърся из пакетите на моята дистрибуция.

Така или иначе портнах един проект, та да се възползвам от free software-а.
Вероятно, бъдещите подобрения на базата от инфото от prifiler-а ще се отразят и на производителността под Windows.
Активен

We are just a moment in time
A blink of an eye
A dream for the blind
Visions from a dying brain

romeo_ninov

  • Напреднали
  • *****
  • Публикации: 2155
    • Профил
Re: Тестване производителност
« Отговор #7 -: Apr 16, 2011, 21:00 »
Горе-долу по темата:

Какви profiler-и има в света на linux; като име на по-добрите от тях?
Ще потърся из пакетите на моята дистрибуция.

Така или иначе портнах един проект, та да се възползвам от free software-а.
Вероятно, бъдещите подобрения на базата от инфото от prifiler-а ще се отразят и на производителността под Windows.
По-добре правете отделни тестове за всяка архитектура, такова свободно пренасяне няма да доведе до добро
Както и с различни компилатори можете да получите различни резултати от профайлера
...
А и още нещо (извинявай ако ставам досаден ) - възможно ли е компилиране на програма , която е писана за 32 битова архитектура , така че да използва пълноценно 64 битов процесор - т.е. дали това трябва да се заложи сорс кода или изцяло е в ръцете на компилатора ?
Не е добра практика да обвързвате кода си с конкретна архитектура освен ако не търсите много висока производителност и оптимално управление на паметта
П.П. И на какво е писана тази програма за точно 32битова архитектура?
« Последна редакция: Apr 16, 2011, 21:03 от romeo_ninov »
Активен

0x2B|~0x2B

clovenhoof

  • Напреднали
  • *****
  • Публикации: 534
  • Distribution: Mac OSX 10.9.2
    • Профил
Re: Тестване производителност
« Отговор #8 -: Apr 16, 2011, 21:37 »
Знам това. Аз обаче гоня скорост, пък и профилера само ще ми покаже възловите места за оптимизация. Той код няма да генерира.

Другото зависи от мен.
« Последна редакция: Apr 16, 2011, 22:34 от clovenhoof »
Активен

We are just a moment in time
A blink of an eye
A dream for the blind
Visions from a dying brain

romeo_ninov

  • Напреднали
  • *****
  • Публикации: 2155
    • Профил
Re: Тестване производителност
« Отговор #9 -: Apr 16, 2011, 22:52 »
Знам това. Аз обаче гоня скорост, пък и профилера само ще ми покаже възловите места за оптимизация. Той код няма да генерира.

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

0x2B|~0x2B

clovenhoof

  • Напреднали
  • *****
  • Публикации: 534
  • Distribution: Mac OSX 10.9.2
    • Профил
Re: Тестване производителност
« Отговор #10 -: Apr 16, 2011, 23:14 »
Бързината на 100% в доста от случаите зависи от качествата на алгоритъма а не толкова от оптимизациите на компилатора. Макар че и последното разбира се има значение.

Например ако използваш мехурчето за сортиране независимо от оптимизациите, линейна сложност не може да получиш.

Тук идеята ми е да ползвам free profiler, защото в света на Windows добрите са платени и то доста.
Активен

We are just a moment in time
A blink of an eye
A dream for the blind
Visions from a dying brain

gat3way

  • Напреднали
  • *****
  • Публикации: 6050
  • Relentless troll
    • Профил
    • WWW
Re: Тестване производителност
« Отговор #11 -: Apr 17, 2011, 01:59 »
gprof, въпреки че е доста грозно нещо, но върши работа. Резултатите не винаги се интерпретират лесно де :)

Активен

"Knowledge is power" - France is Bacon

romeo_ninov

  • Напреднали
  • *****
  • Публикации: 2155
    • Профил
Re: Тестване производителност
« Отговор #12 -: Apr 17, 2011, 07:17 »
Бързината на 100% в доста от случаите зависи от качествата на алгоритъма а не толкова от оптимизациите на компилатора. Макар че и последното разбира се има значение.

Например ако използваш мехурчето за сортиране независимо от оптимизациите, линейна сложност не може да получиш.

Тук идеята ми е да ползвам free profiler, защото в света на Windows добрите са платени и то доста.
За алгоритъма е така, но си помисли за хипотетична ситуация (само за примера):
две функции, примерно getchar и putchar, двете се извикват в кода приблизително еднакъв брой пъти. Но реализацията на getchar под Линукс ти осигурява време за изпълнение 10 милисекунди, под Windows 9 милисекунди, при putchar е обратното
И ако искаш да оптимизираш програмата за скорост извикванията на коя от функциите ще се опиташ да намалиш?
Активен

0x2B|~0x2B

clovenhoof

  • Напреднали
  • *****
  • Публикации: 534
  • Distribution: Mac OSX 10.9.2
    • Профил
Re: Тестване производителност
« Отговор #13 -: Apr 17, 2011, 12:45 »
Разлики от този сорт ще има, но няма да са съществени.
Промените в критичните части от алгоритъма ще повлияят съществено, независимо от платформата.
Та именно критичните части ме интересуват.
Активен

We are just a moment in time
A blink of an eye
A dream for the blind
Visions from a dying brain

clovenhoof

  • Напреднали
  • *****
  • Публикации: 534
  • Distribution: Mac OSX 10.9.2
    • Профил
Re: Тестване производителност
« Отговор #14 -: Apr 17, 2011, 12:55 »
В крайна сметка си е играчка портването, а оптимизирането в такава ситуация още повече.
Активен

We are just a moment in time
A blink of an eye
A dream for the blind
Visions from a dying brain