|
|
|
inline корявo работает
|
|||
|---|---|---|---|
|
#18+
Почему когда есть в таблице VAR какие нибудь переменные указатели, то функция inline сходит с сума ? И тормозит дико код. Ведь на вызовах должна быть экономия! Может что в настройках не так ? - Выдаёт : 0.250906 сек. Код: pascal 1. - Выдаёт : 0.265767 сек. Код: pascal 1. Код: pascal 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2017, 16:50:08 |
|
||
|
inline корявo работает
|
|||
|---|---|---|---|
|
#18+
НяшикПочему когда есть в таблице VAR какие нибудь переменные указатели, то функция inline сходит с сума ? И тормозит дико код. Ведь на вызовах должна быть экономия! Может что в настройках не так ? - Выдаёт : 0.250906 сек. Код: pascal 1. - Выдаёт : 0.265767 сек. Код: pascal 1. Код: pascal 1. 2. 3. 4. 5. 6. "Почему когда я пью газировку, меня шибает не в нос, а в самую маковку ?" Смотри ассемблерный код, лучше выкладывай сюда оба случая. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2017, 16:59:53 |
|
||
|
inline корявo работает
|
|||
|---|---|---|---|
|
#18+
Няшик, inline меняет распределение регистров в вызывающей и вызываемой процедурах и, следовательно, может влиять на качество их оптимизации из-за потребности в большем количестве регистров для "объединенной" процедуры. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2017, 17:07:46 |
|
||
|
inline корявo работает
|
|||
|---|---|---|---|
|
#18+
Aleksandr Sharahov, в качестве примера, именно поэтому в поразрядной сортировке http://guildalfa.ru/alsha/node/21 мне пришлось фазы распределения реализовать как самостоятельные процедуры ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2017, 17:12:13 |
|
||
|
inline корявo работает
|
|||
|---|---|---|---|
|
#18+
schi, Вот сама функция которая копирует строки (по несколько байтов, за один такт), и остаток. Чем move не подошёл - я проект ещё делаю под лазур, и там она медленно работает, вот пишу что бы там и там. Код: 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. 27. 28. 29. Её ассемблер Код: 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. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. Рассматривать Ассемблер будем на такой функции Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. Без inline выходит Код: 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. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. Вместе с inline Код: 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. 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. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2017, 17:12:40 |
|
||
|
inline корявo работает
|
|||
|---|---|---|---|
|
#18+
Пользуюсь случаем, дабы спросить... Я воспользовался компилятором GCC и сделал ASM благодаря сайту godbolt Дальше полученный код засунул в Delpho Код: 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. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. Но, по результату она оказалась медленной на 0.011862 сек. Это говорит о том, что GCC медленнее Delphi ? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2017, 17:28:11 |
|
||
|
inline корявo работает
|
|||
|---|---|---|---|
|
#18+
Для сайта того я задал максимальную оптимизацию -m32 -O3 -Os -S -masm=intel ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2017, 17:32:04 |
|
||
|
inline корявo работает
|
|||
|---|---|---|---|
|
#18+
Няшик, какой смысл переизобретать Move? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2017, 17:44:46 |
|
||
|
inline корявo работает
|
|||
|---|---|---|---|
|
#18+
Какая офигенная "оптимизация". Еще и с ошибками =) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2017, 17:45:49 |
|
||
|
inline корявo работает
|
|||
|---|---|---|---|
|
#18+
Aleksandr SharahovНяшик, какой смысл переизобретать Move? В скорости, если Delphi нам выдаёт хорошие результат в виде Код: pascal 1. 2. 3. 4. 0.258414 сек. То лазур уже выдаёт 0.520669 сек. =___= БРРР ... С моим велосипедом он выдаёт 0.472578 сек Опять же все оптимизации выставил на максимум.. Siemargl, Ну уж какая есть ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2017, 17:52:05 |
|
||
|
inline корявo работает
|
|||
|---|---|---|---|
|
#18+
Няшик, Поизучай что ли матчасть https://github.com/graemeg/freepascal/blob/master/rtl/i386/fastmove.inc ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2017, 17:56:05 |
|
||
|
inline корявo работает
|
|||
|---|---|---|---|
|
#18+
Няшик, тебе намекают на SizeOf(EngineChar) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2017, 17:56:59 |
|
||
|
inline корявo работает
|
|||
|---|---|---|---|
|
#18+
Aleksandr SharahovНяшик, тебе намекают на SizeOf(EngineChar) А что тут такого? Мне удобнее когда все типы - заранее переопределяются настройками движка, в зависимости под какую я платформу хочу собрать, и какие типы строк я хочу использовать. Сейчас у меня там Код: pascal 1. 2. SiemarglНяшик, Поизучай что ли матчасть https://github.com/graemeg/freepascal/blob/master/rtl/i386/fastmove.inc А на боевых действиях это как - то коряво работает... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2017, 18:02:05 |
|
||
|
inline корявo работает
|
|||
|---|---|---|---|
|
#18+
Няшик, сам посмотри, сколько лишних пересылок порождается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2017, 18:22:28 |
|
||
|
inline корявo работает
|
|||
|---|---|---|---|
|
#18+
Няшик, Так ты код посмотрел? Проверил, что у тебя RTL с USE_FASTMOVE собран? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2017, 18:59:42 |
|
||
|
inline корявo работает
|
|||
|---|---|---|---|
|
#18+
SiemarglНяшик, Так ты код посмотрел? Проверил, что у тебя RTL с USE_FASTMOVE собран? Вроде как. Поставил Код: pascal 1. И ничего не изменилось ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2017, 20:14:10 |
|
||
|
inline корявo работает
|
|||
|---|---|---|---|
|
#18+
НяшикSiemarglНяшик, Так ты код посмотрел? Проверил, что у тебя RTL с USE_FASTMOVE собран? Вроде как. Поставил Код: pascal 1. И ничего не изменилось поставил где, у себя в программе, использующую уже собранную RTL ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2017, 20:48:36 |
|
||
|
inline корявo работает
|
|||
|---|---|---|---|
|
#18+
Vizit0rНяшикпропущено... Вроде как. Поставил Код: pascal 1. И ничего не изменилось поставил где, у себя в программе, использующую уже собранную RTL ? А ну так собирать ещё RTL нужно... Ну если в гугле 1 запрос по данному поводу "USE_FASTMOVE LAZARUS" то тут уже не совсем мой косяк. Киньте мануал как это сделать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2017, 21:14:01 |
|
||
|
inline корявo работает
|
|||
|---|---|---|---|
|
#18+
Кстати, интересно, а зачем нужен режим без USE_FASTMOVE, который по-умолчанию, как я понял? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2017, 22:08:43 |
|
||
|
inline корявo работает
|
|||
|---|---|---|---|
|
#18+
НяшикSiemarglНяшик, Так ты код посмотрел? Проверил, что у тебя RTL с USE_FASTMOVE собран? Вроде как. Поставил Код: pascal 1. И ничего не изменилось :LOL: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2017, 22:22:26 |
|
||
|
inline корявo работает
|
|||
|---|---|---|---|
|
#18+
НяшикНо, по результату она оказалась медленной на 0.011862 сек. Это говорит о том, что GCC медленнее Delphi ? Это говорит о том, что там более оптимизированный алгоритм используется - он GPU использует. Кстати, алгоритм запатентованный вроде бы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2017, 22:29:05 |
|
||
|
inline корявo работает
|
|||
|---|---|---|---|
|
#18+
НяшикПользуюсь случаем, дабы спросить... Я воспользовался компилятором GCC и сделал ASM благодаря сайту godbolt .... Выбери там же Clang 4 и получишь SSE ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2017, 22:56:56 |
|
||
|
inline корявo работает
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan)НяшикНо, по результату она оказалась медленной на 0.011862 сек. Это говорит о том, что GCC медленнее Delphi ? Это говорит о том, что там более оптимизированный алгоритм используется - он GPU использует. Кстати, алгоритм запатентованный вроде быА давай еще сказку на ночь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2017, 22:59:02 |
|
||
|
inline корявo работает
|
|||
|---|---|---|---|
|
#18+
SiemarglНяшикПользуюсь случаем, дабы спросить... Я воспользовался компилятором GCC и сделал ASM благодаря сайту godbolt .... Выбери там же Clang 4 и получишь SSE Ну... Поставил, впихнул в Delphi... И вижу что моя функция на Delphi - 0.002525 сек быстрее.. Пробовал с разными оптимизациями, остановился на -m32 -O3 -Os -Oz Код: 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. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. И всё же, почему так медленно? Может это Delphi ассемблер как - то коверкает. Вот листинг Код: 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. 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. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2017, 00:06:11 |
|
||
|
inline корявo работает
|
|||
|---|---|---|---|
|
#18+
Няшик, Вот код от Clang4 с SSE (-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. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. Ес-но XMM инструкции начнут работать, если у тебя > 32 байт данных. QueryPerformanceCounter используй для высокой точности. Ну и ошибка никуда не делась - если области перекрываются, может быть мусор, а не копия. Дальше - инлайнить такие огромные функции - обычно невыгодно, используй fastcall - два параметра в регистрах ECX, EDX . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2017, 08:50:40 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39455554&tid=2042284]: |
0ms |
get settings: |
5ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
23ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
62ms |
get tp. blocked users: |
1ms |
| others: | 188ms |
| total: | 312ms |

| 0 / 0 |
