Как можно оптимизировать прилогаемый код ? (возведение числа в произвольную степень) Сколько тактов занимает его выполнение на вашей машине ? (указать какой проц) _2044032175__Math.zip
3325 такста - Pentium 2.4 HT. Отличные сорсы. Зачем invoke Sleep,10 мой младенческий разум не понял. Если нужно возвадить только в целую степень то лучше то что я уже написал. Если же в множество возможных вариантов включаются и нецелые числа, то лучше такой способ, правда с небольшой погрешнсотью, величина которой критична для одинх задач и некритична для других.
IMHO переполнение счётчика. 16384 итераций за 1169 тактов (AXP2000+)? Упс, сорри, там потом делится на 16384
IceStudent Да там такты, это нормально, что на древнем камне их меньше (архитектура проще\конвеер короче), такое на многих тестах случается (но не на всяких), вот если бы P6 да нынешнюю частоту ...
Все супер! Где исходники взял, аль сам написал? Посмотрел тут, получил, что перед началом цикла у тебя в st(0) содержится величина st=[-power*log<sub>2</sub>(1/value)]/[log<sub>2</sub>e] Дай- ка я думаю сделаю так: st=[power*log<sub>2</sub>(value)]/[log<sub>2</sub>e] Это тоже самое выражение (упрощенное). Теперь объясни мне, почему st(0) отличаются друг от друга в двух этих слачаях.
Числа забыл указать. Проц. Intel Pentioum Celeron 2.00 GHz 3500 - в среднем (+-100) После перекомпиляции 3100 (+-100) (тоже странно)
Я совсем глуп видимо, но получается, что при увеличении частоты в 3,... раза итоговая производительность увеличивается в 1,7... раза так, что ли?
pas Именно, если взять вычисления миллиарда таких комбинаций, то P4 выигрывает не на много: Код (Text): =============================================================== PIII 1.0GHz (Tualatin) 1000000000 * 1463 / 1000000000 = 1463 секунд / 60 = 24.38 минут =============================================================== P4 2.40GHz (Northwood) 1000000000 * 3325 / 2400000000 = 1385 секунд / 60 = 23.08 минут =============================================================== А Tualatin при частоте этого Northwood вычислил бы все за 10.16 минут. Правда возможно, что при отключеном HT P4 покажет меньше тактов, т.к. результат RDTSC скорее всего включает 2 потока
Отвечаю всем в порядке очереди: - NoName: invoke Sleep,10 я заметил что при его использовании точнее получается определить кол-во тактов (результат стабилен) чего так не знаю - IceStudent: там точно такты! На 500 Селере сегодня получил 1477, на Duron 900 всего 1140 - dr_dred: log2(1/value) используется т.к. вроде при использовании FYL2X -2*sqrt(2)<=ST(0)<=2*sqrt(2) - dead_body: на Pentium 4 1.6 GHz получилось 3170 (какое ядро не знаю ), хотя на Pentium 1 166 MHz получается 1822 такта для _Math и 1644 для Math Какие тут напрашиваются выводы ? Пеньки что деградируют ? AMD the BEST ? Хотелось бы услышать замечания в сторону оптимизации.
Чтобы сделать какие-то выводы нужно провести ещё много тестов, например кол-во тактов необходимых на шифрование 10Кб данных алгоритмом RC4 почти одинаково в P3\P4 (около 80000, тест в аттаче) 1870005306__rc4test.exe
Вот результат. Прокоментируй (где там что ?) Эти 15 чисел - такты ? Насколько я понял там нет работы с сопроцессором, а выводы хотелось бы сделать именно о его работе. И зачем там столько nop в цикле ? Кинь исходник. 2044616466__Untitled.gif
Хе-хе. Sonic, ты вот смеешься над моим алгоритмом, а не знаешь, почему он работает медленей твоего в два раза. Он как раз в три раза быстрее работает. Ты делаешь invoke QPower,offset x,offset y,offset x,32 т.е. полученное число снова возводишь в ту же степень (ну, для статистики). При огромных числах в моей процедурке происходит ошибка (в отладчике смотрел), отсюда замедление. Сделай так: .data<ol type=1>... z dq ? ...</ol>.code <ol type=1>... invoke QPower,offset x,offset y,offset z,32 ... </ol>и увидишь результат. Моя процедурка: _QPower proc lpX,lpPower,lpRes<ol type=1>finit fld1 mov eax,lpPower fld qword ptr [eax] fchs fld1 mov eax,lpX fld qword ptr [eax] fdivp st(1),st fyl2x fld st frndint fsub st(1),st fxch st(1) f2xm1 fld1 fadd fscale fstp st(1) mov eax,lpRes fst qword ptr [eax] ret</ol>_QPower endp
Sonic Это с какого камня? Да такты (15 проходов), нопы для выравнивания (не в цикле, а перед ним), тест твоего math в аттаче тоже _251892150__temp.zip
шифрование 10Кб данных алгоритмом RC4 (AXP2000+ @1666MHz) --------------------------- 00404480 / 134 bytes / 15 passes --------------------------- 000000000000000000467734 000000000000000000138716 000000000000000000138665 000000000000000000138657 000000000000000000138597 000000000000000000138598 000000000000000000138671 000000000000000000138622 000000000000000000138667 000000000000000000138686 000000000000000000138669 000000000000000000138598 000000000000000000138609 000000000000000000138644 000000000000000000138676 --------------------------- ЗЫ: странно напоминают http://www.wasm.ru/forum/files/2044616466__Untitled.gif ЗЫЫ: может ещё что-нибудь сравнить?