|
не работает ping x64
|
|||
---|---|---|---|
#18+
Соколинский Борис "не надо выпендрежей, используйте packed record и #pragma pack(1) ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2022, 14:06 |
|
не работает ping x64
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Попробуйте sizeof от массива TByteRecord для пущей занимательности. Кстати, для этого есть packed array :) ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2022, 14:09 |
|
не работает ping x64
|
|||
---|---|---|---|
#18+
Kazantsev Alexey но в исходниках встречается ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2022, 14:10 |
|
не работает ping x64
|
|||
---|---|---|---|
#18+
Kazantsev Alexey Даже FPC в режиме совместимости с дельфями это поддерживает. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2022, 14:11 |
|
не работает ping x64
|
|||
---|---|---|---|
#18+
_Vasilisk_Кстати, у Майкрософт в большинстве случаев packed/не packed не влияет, т.к. они добавляют reserved поля для правильного выравнивания. Меньшинство тоже бьёт больно. Я как-то по глупости объявлял packed NumericStruct для ODBC... С тех пор при портировании обязательным шагом является тестовая утилита, сверяющая размеры и смещения каждого поля каждой структуры. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2022, 14:23 |
|
не работает ping x64
|
|||
---|---|---|---|
#18+
Вот мне любопытно есть какой-нибудь пример, когда выравнивание структур > 8 байт повышает быстродействие хотя бы на 10%? А если нет - нафига вообще это выравнивание понадобилось? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2022, 14:46 |
|
не работает ping x64
|
|||
---|---|---|---|
#18+
Соколинский Борис нафига вообще это выравнивание понадобилось? https://community.intel.com/t5/Software-Tuning-Performance/Why-should-data-be-aligned-to-16-bytes-for-SSE-instructions/td-p/1164004 ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2022, 15:09 |
|
не работает ping x64
|
|||
---|---|---|---|
#18+
Соколинский Борис Вот мне любопытно есть какой-нибудь пример, когда выравнивание структур > 8 байт повышает быстродействие хотя бы на 10%? А если нет - нафига вообще это выравнивание понадобилось? https://docwiki.embarcadero.com/RADStudio/Alexandria/en/Internal_Data_Formats_(Delphi)#Record_Types ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2022, 15:27 |
|
не работает ping x64
|
|||
---|---|---|---|
#18+
Kazantsev Alexey Соколинский Борис нафига вообще это выравнивание понадобилось? https://community.intel.com/t5/Software-Tuning-Performance/Why-should-data-be-aligned-to-16-bytes-for-SSE-instructions/td-p/1164004 ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2022, 16:02 |
|
не работает ping x64
|
|||
---|---|---|---|
#18+
s62 Речь шла о packed/unpacked записях. Packed/unpacked - это же про выравнивание полей внутри записи. В плане передачи параметров к внешним библиотекам - дополнительный аргумент к использованию packed. Вопрос об эффективности выравнивания остается в силе. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2022, 16:04 |
|
не работает ping x64
|
|||
---|---|---|---|
#18+
Соколинский Борис Насколько я знаю, SIMD до сих пор не реализован в pas-компиляторе, только через встроенный asm. Можно считать что к дельфовому коду это не относится. Даже если закрыть глаза на то что встроенный ассемблер эти инструкции понимает, данные могут передаваться внешним обработчикам. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2022, 16:17 |
|
не работает ping x64
|
|||
---|---|---|---|
#18+
Kazantsev Alexey, Если внешнему обработчику необходимы каким-то образом выровненные данные - он и должен задекларировать их должным образом в виде packed record с явно указанными резервными байтами. Аналогично в случае SIMD-ов, которые используются в лучшем случае в 1:100000 кодов. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2022, 16:24 |
|
не работает ping x64
|
|||
---|---|---|---|
#18+
Соколинский Борис Если внешнему обработчику необходимы каким-то образом выровненные данные - он и должен задекларировать их должным образом в виде packed record с явно указанными резервными байтами. Он должен лишь требования о выравнивании обозначить, а подготовить данные это забота приложения. Соколинский Борис Аналогично в случае SIMD-ов, которые используются в лучшем случае в 1:100000 кодов. Ну ведь используются же... ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2022, 17:04 |
|
не работает ping x64
|
|||
---|---|---|---|
#18+
Kazantsev Alexey Он должен лишь требования о выравнивании обозначить, а подготовить данные это забота приложения. Kazantsev Alexey Ну ведь используются же... Явно не тот случай когда в штатный компилятор нужно автоматически выравнивание добавлять. Я все еще жажду увидеть пример дельфового кода, где выравнивание адресов/размеров структур увеличивает быстродействие хотя бы на 5%. Любой, даже алгоритмически бессмысленный. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2022, 17:16 |
|
не работает ping x64
|
|||
---|---|---|---|
#18+
Соколинский Борис Ну OK, в случае необходимости SSE можно также явно резервные байты прописать. Явно не тот случай когда в штатный компилятор нужно автоматически выравнивание добавлять. Там нужно, в другом месте нужно... Ну так рутину автоматизировать нужно. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2022, 17:37 |
|
не работает ping x64
|
|||
---|---|---|---|
#18+
Соколинский Борис Я все еще жажду увидеть пример дельфового кода, где выравнивание адресов/размеров структур увеличивает быстродействие хотя бы на 5%. Код: 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.
Но вопрос не в этом. Да сейчас возможно (и даже наиболее вероятно) это не имеет никакого смысла. Как и всякие соглашения о вызовах (которые в x64 привели все к единому виду). Но это то наследие, с которым приходится работать ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2022, 17:45 |
|
|
start [/forum/topic.php?fid=58&msg=40129006&tid=2036683]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
41ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
55ms |
get tp. blocked users: |
2ms |
others: | 264ms |
total: | 407ms |
0 / 0 |