|
|
|
inline корявo работает
|
|||
|---|---|---|---|
|
#18+
Сонный и сам - нарушил главное правило - не мешай оптимизатору =) Код: plaintext 1. 2. 3. 4. 5. 6. 7. asm Clang4 -O3 -m32 Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2017, 08:58:12 |
|
||
|
inline корявo работает
|
|||
|---|---|---|---|
|
#18+
И ради интереса, полное развертывание циклов с опциями -O3 -m32 -mfpmath=sse -fno-builtin -march=haswell ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2017, 09:10:38 |
|
||
|
inline корявo работает
|
|||
|---|---|---|---|
|
#18+
А я вот краем уха где-то слышал, что в современных процессорах MOVSD (MOVSQ для 64 бит), работает с той же скоростью, что и все ваши хитропопые оптимизации... (Интересуют ли нас не совсем современные процессоры - вот в чём вопрос.) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2017, 09:17:38 |
|
||
|
inline корявo работает
|
|||
|---|---|---|---|
|
#18+
ваш край уха немного запаздывает ) в приложенном листинге есть 128-битная movups, которая из древнего SSE можно явно указать другую архитектуру, тогда используется vmovups -до 256 бит, поновее из AVX, но тоже весьма древняя ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2017, 09:48:13 |
|
||
|
inline корявo работает
|
|||
|---|---|---|---|
|
#18+
Няшик, авторЭто говорит о том, что GCC медленнее Delphi ? Странно как-то у тебя GCC собрал, да и в делфи ты какой-то странный код приводишь. Вод XE6 Для больших блоков: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. По 8 байт (64 бита) переносит, элайн учитывает. Будет ли по 128 или 256 бит быстрее - вопрос спорный, с учетом 64х битности шины. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2017, 10:15:04 |
|
||
|
inline корявo работает
|
|||
|---|---|---|---|
|
#18+
Няшик Может это Delphi ассемблер как - то коверкает. Да, конечно. Меняет твои правильные команды на свои неправильные. Это заговор. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2017, 10:52:05 |
|
||
|
inline корявo работает
|
|||
|---|---|---|---|
|
#18+
makhaon Будет ли по 128 или 256 бит быстрее - вопрос спорный, с учетом 64х битности шины. Какой шины ? И причем тут шина ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2017, 10:53:22 |
|
||
|
inline корявo работает
|
|||
|---|---|---|---|
|
#18+
SiemarglНяшик, Вот код от Clang4 с SSE (-O3 -m32), у тебя же лишние опции. Далее, еще надо правильно измерять и не забывать про погрешности измерений. Ес-но XMM инструкции начнут работать, если у тебя > 32 байт данных. Ну использовать XMM инструкции я не могу позволить себе - из за компилятора. Так что, опции далеко не лишние, особенно m32 SiemarglQueryPerformanceCounter используй для высокой точности. Её и использую как раз - таки. Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. SiemarglНу и ошибка никуда не делась - если области перекрываются, может быть мусор, а не копия. У меня такого не будет, так как код всегда находится в движении. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2017, 11:10:22 |
|
||
|
inline корявo работает
|
|||
|---|---|---|---|
|
#18+
SiemarglСонный и сам - нарушил главное правило - не мешай оптимизатору =) Код: plaintext 1. 2. 3. 4. 5. 6. 7. asm Clang4 -O3 -m32 Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. Данный код перемешает по 1 символу за такт, когда можно по 2 что влияет на скорость выполнение в N сек. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2017, 11:14:13 |
|
||
|
inline корявo работает
|
|||
|---|---|---|---|
|
#18+
НяшикДанный код перемешает по 1 символу за такт, когда можно по 2 что влияет на скорость выполнение в N сек. С какого перепуга? Код: plaintext 1. 2. Сколько перемещают? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2017, 12:07:02 |
|
||
|
inline корявo работает
|
|||
|---|---|---|---|
|
#18+
SiemarglНяшикДанный код перемешает по 1 символу за такт, когда можно по 2 что влияет на скорость выполнение в N сек. С какого перепуга? Код: plaintext 1. 2. Сколько перемещают? И опять же эти инструкции которые мой 32 битный компилятор не скушает. Хм.. И да, код на 0.000079 сек быстрее оказался, в отличии от Delphi кода (Delphi код так хорош? В своём 32 битном режиме) Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. А тот же GCC 7.1 генерит вот такое .. По одному символу судя по погрешности в дохера.. Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2017, 12:27:03 |
|
||
|
inline корявo работает
|
|||
|---|---|---|---|
|
#18+
НяшикSiemarglпропущено... С какого перепуга? Код: plaintext 1. 2. Сколько перемещают? И опять же эти инструкции которые мой 32 битный компилятор не скушает. ... Это 32-битные инструкции. Если же встроенный в Д/Лазарь ассемблер их не знает, замени на FILD/FSTP как XE6 делает - это одинаково опции для gcc 5/6/7 я уже писал -O3 -m32 -mfpmath=sse -fno-builtin -march=ivybridge (marh по возможному для тебя выбору) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2017, 12:41:04 |
|
||
|
inline корявo работает
|
|||
|---|---|---|---|
|
#18+
Начиная с Nehalem, Интел заоптимизировал инструкцию REP MOVSx. Реализующий ее микрокод использует сторадж максимально возможной длины, то есть обычный вызов REP MOVSD покажет производительность не уступающую SSE-инструкциям, по факту пересылая ГОРАЗДО больше четырех байт за такт (точное число зависит от архитектуры). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2017, 12:44:15 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39455809&tid=2042284]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
204ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
128ms |
get tp. blocked users: |
2ms |
| others: | 221ms |
| total: | 593ms |

| 0 / 0 |
