powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / float и int
25 сообщений из 27, страница 1 из 2
float и int
    #35714001
Belevern
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрос не совсем в тему, но на сколько float и double медленней инта работает? Сколько тактов на эти операции уходит. В смысле умножение, сложение, деление вычитание.
...
Рейтинг: 0 / 0
float и int
    #35714046
Maykie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelevernВопрос не совсем в тему, но на сколько float и double медленней инта работает? Сколько тактов на эти операции уходит. В смысле умножение, сложение, деление вычитание.
Вообще afair это пресильно зависит от конкретной марки cpu.
легче взять и замерить с использованием ОбобщенногоПрограммирования. Ну или рыскать по amd.com/intel.com в поисках нужных док
...
Рейтинг: 0 / 0
float и int
    #35714053
Belevern
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maykie,

думаю там не сильно Pentium 4 от AMD отличаются. на MOV 2 такта, эт я знаю. А вот на MUL, SUB и т.п. это хз... Ищу знающих людей. Вопрос в том нужно ли мне использовать float/double или int на 1000 делить всегда.
...
Рейтинг: 0 / 0
float и int
    #35714058
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaykieBelevernВопрос не совсем в тему, но на сколько float и double медленней инта работает? Сколько тактов на эти операции уходит. В смысле умножение, сложение, деление вычитание.Вообще afair это пресильно зависит от конкретной марки cpu.И очень сильно зависит от последовательности действий, попадания в кэши и т.п. Т.е. от вещей, не связанных напрямую с типом данных.
Имхо, если интересует точный результат, то нужно проверять на конкретном алогритме. Если интересует приблизительный, то - одинаково.
...
Рейтинг: 0 / 0
float и int
    #35714069
про герр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelevernMaykie,

думаю там не сильно Pentium 4 от AMD отличаются. на MOV 2 такта, эт я знаю. А вот на MUL, SUB и т.п. это хз... Ищу знающих людей. Вопрос в том нужно ли мне использовать float/double или int на 1000 делить всегда.

сама операция деления выполняется в 10 раз дольше, чем операция умножения.
...
Рейтинг: 0 / 0
float и int
    #35714073
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
про геррсама операция деления выполняется в 10 раз дольше, чем операция умножения.Вы уточняйте для какого процессора и в каких условиях. Т.к. в общем случае это неверно.
...
Рейтинг: 0 / 0
float и int
    #35714091
про герр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftпро геррсама операция деления выполняется в 10 раз дольше, чем операция умножения.Вы уточняйте для какого процессора и в каких условиях. Т.к. в общем случае это неверно.
без разницы. в двоичной арифметике нет деления, есть сложение, умножение, сдвиг. операция деления - комбинация сложений и сдвигов.
...
Рейтинг: 0 / 0
float и int
    #35714130
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
про геррбез разницы. в двоичной арифметике нет деления, есть сложение, умножение, сдвиг. операция деления - комбинация сложений и сдвигов.и как из этого следует число 10? или даже вообще отличие времени выполнения деления от времени выполнения умножения?
...
Рейтинг: 0 / 0
float и int
    #35714158
Алексей Морозов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Belevern
на MOV 2 такта, эт я знаю. А вот на MUL, SUB и т.п. это хз...
Ищу знающих людей. Вопрос в том нужно ли мне использовать float/double или
int на 1000 делить всегда.


MOV выполняется за один такт.
И возможно, что за один такт выполнится параллельно 3 команды.

FLOAT и DOUBLE должны выполняться примерно одинакокое время, потому что
команда
умножения одна. Различные команды копирования между регистром и памятью (32,
64, 80-бит и т.п.)

http://www.amd.com/us-en/assets/content_type/white_papers_and_tech_docs/33425.pdf


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
float и int
    #35714172
про герр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftпро геррбез разницы. в двоичной арифметике нет деления, есть сложение, умножение, сдвиг. операция деления - комбинация сложений и сдвигов.и как из этого следует число 10? или даже вообще отличие времени выполнения деления от времени выполнения умножения?
бес попутал (насчет числа 10)
немного о другой архитектуре думал, в ней в частности оп-я умножения делается за 2 такта (сложение + сдвиг) а деление за 20 тактов. Не думаю что координально что то меняется из за архитектуры.

Модератор: Тема перенесена из форума "C++".
...
Рейтинг: 0 / 0
float и int
    #35714446
Алексей Морозов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"Алексей Морозов" <nospam@sql.ru>; сообщил/сообщила в новостях следующее:
news:6570738@sql.ru...
Автор: Алексей Морозов

xhttp://www.amd.com/us-en/assets/content_type/white_papers_and_tech_docs/33425.pdf

Не ту ссылку дал.
Время выполнения команд процессора для AMD приведено где то тут:

http://www.amd.com/us-en/Processors/TechnicalResources/0,,30_182_739_7203,00.html

Но мне проще проверить это командой RDTSC


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
float и int
    #35714478
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей МорозовНо мне проще проверить это командой RDTSCА попробуйте.
...
Рейтинг: 0 / 0
float и int
    #35715000
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelevernВопрос не совсем в тему, но на сколько float и double медленней инта работает? Сколько тактов на эти операции уходит. В смысле умножение, сложение, деление вычитание.
Сравнивать такты операций - неинтересно. Ведь производительность алгоритма будет зависеть не только от этих цифр.
...
Рейтинг: 0 / 0
float и int
    #35715119
Quartz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей МорозовНо мне проще проверить это командой RDTSCУгу... Время выполнения команды в тактах не считают (если мне не изменяет память) со времен P II, т.к. изобретение Форда оказалось востребованным и в процессорах. Сейчас информация о скорости выполнения приводится в количестве микроопераций.

2 Belevern:
Опишите задачу подробнее; возможно, оптимальным по производительности/точности будет использование потоковых SIMD-расширений.
...
Рейтинг: 0 / 0
float и int
    #35715347
Алексей Морозов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Деление двух чисел до 1000:

INT - за 40 тактов.
DOUBLE - за 2 такта.
FLOAT - за 1 такт.


Так компилятор делит int:
Код: plaintext
1.
2.
3.
4.
5.
mov ecx,dword ptr [esp+34h]
mov eax,dword ptr [esp+28h]
cdq
idiv eax,ecx
 mov dword ptr [esp+28h],eax

Так компилятор делит double:


Код: plaintext
1.
2.
3.
4.
fld qword ptr [esp+34h]
fdiv qword ptr [esp+28h]
fstp qword ptr [esp+28h]


Так я проверяю скорость:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
  int t, mt;
  mt= 100000 ;
  for(int i= 0 ; i< 10000 ; i++) {
    volatile int ia, ib=rand()% 1000 , ic=rand()% 1000 + 1 ; // int - меняем на 
float, double
    _asm {
      rdtsc
      mov t, eax
    }
    ia = ib/ic;
    _asm {
      rdtsc
      sub t, eax
    }
    t=-t- 9 ;
    if(t> 0  && t<mt) mt=t;
  }
  MessageBox( 0 ,i2s(mt).c_str(), 0 , 0 );


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
float и int
    #35715567
АнатоЛой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так я проверяю скорость:

Код: plaintext
1.
2.
3.
4.
5.
6.
  for(int i= 0 ; i< 10000 ; i++) {
    volatile int ia, ib=rand()% 1000 , ic=rand()% 1000 + 1 ; // int - меняем на 
float, double
...
  }
  MessageBox( 0 ,i2s(mt).c_str(), 0 , 0 );
[/quot]

Может стоит три массива завести и заполнить rand'ом ДО цикла?
...
Рейтинг: 0 / 0
float и int
    #35715596
акуз-программист
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
про геррсама операция деления выполняется в 10 раз дольше, чем операция умножения.
пусть делит на 1024:)) тогда быстрее будет.
...
Рейтинг: 0 / 0
float и int
    #35715628
Алексей Морозов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АнатоЛойМожет стоит три массива завести и заполнить rand'ом ДО цикла?

Зачем?
...
Рейтинг: 0 / 0
float и int
    #35715792
АнатоЛой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей МорозовАнатоЛойМожет стоит три массива завести и заполнить rand'ом ДО цикла?

Зачем?
Виноват. Привычка. :)
...
Рейтинг: 0 / 0
float и int
    #35716902
Quartz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей МорозовДеление двух чисел до 1000:

INT - за 40 тактов.
DOUBLE - за 2 такта.
FLOAT - за 1 такт. Какой у Вас проц?
...
Рейтинг: 0 / 0
float и int
    #35717085
Алексей Морозов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Quartz Какой у Вас проц?

AMD Athlon 64 X2.

Я еще раз перепровирил на программе ниже , и получилось 3 такта.
Попробовал увеличить числа до 100000, получилось 4 такта.
Разместил 5 последовательностей команд (-fld-fdiv-fstp-), получилось 5x4
такта.

Выходит, что DOUBLE быстрее чем INT в 10 раз.

Код: plaintext
1.
2.
3.
4.
5.
6.
fld ib
fwait // ждет завершения работы математичесского сопроцессора (конвеера).
fdiv ic
fwait // ждет завершения работы математичесского сопроцессора
fstp ia
fwait // ждет завершения работы математичесского сопроцессора



Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
float и int
    #35717318
Алексей Морозов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробовал для целых чисел очистить конвеер процессора 64-мя NOP-ами перед
командами деления, результат тот же.


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
float и int
    #35717371
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей МорозовПопробовал для целых чисел очистить конвеер процессора 64-мя NOP-амиЧистить надо не NOP-ами, а условными переходами с невозможностью предсказания. Обычные NOP-ы, насколько я в курсе, давно игнорируются.

Да и вообще эти эксперименты, имхо, бессмыслены. Ибо в реальной ситуации другие факторы могут оказать большее влияние на время выполнения, нежели разница между float и int.
...
Рейтинг: 0 / 0
float и int
    #35717402
Quartz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А компилятор? :). Просто сильно удивило отставание целочисленного блока аж на порядок.

У меня в (VS 2008, Core 2 Duo) получились примерно равные результаты c int и double. Если написать последовательность команд (аналог Вашего последнего примера), то целочисленные вычисления ожидаемо опережают по скорости FPU.

PS: Есть стойкое ощущение, что такого рода тесты слишком... синтетические, что ли. Все же логика работы современных "камней" весьма сложна, и, повторюсь, замер скорости отдельной операции вряд ли даст представление об общей скорости выполнения кода.
PPS: Завтра попробую дома на X2.
...
Рейтинг: 0 / 0
float и int
    #35717625
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftДа и вообще эти эксперименты, имхо, бессмыслены. Ибо в реальной ситуации другие факторы могут оказать большее влияние на время выполнения, нежели разница между float и int.
+1

Этот тест - вообще не показательный.
...
Рейтинг: 0 / 0
25 сообщений из 27, страница 1 из 2
Форумы / Программирование [игнор отключен] [закрыт для гостей] / float и int
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]