|
|
|
Создание xml
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOUP.S. В тесте как раз разница в 50 раз относительно TStringList :) TStringList люди-то для примера приводят. Никто в своём уме 1GB через TStringList перелопачивать не будет. Скорее всего люди просто сделают Stream.Write(buffer, buffer_size). И какое преимуществу даст твой магический способ записи перед этим методом? Можно ещё "подшаманить", чтобы в буфере было, к примеру, не менее 2048 байт в момент записи. Что там ещё за волшебные оптимизации могут быть, кроме как использование SSD? :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2017, 19:36:42 |
|
||
|
Создание xml
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOUP.S. В тесте как раз разница в 50 раз относительно TStringList :) Да уж. Быстродействие впечатляет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2017, 21:07:04 |
|
||
|
Создание xml
|
|||
|---|---|---|---|
|
#18+
Твое у меня выполняется за 700-900 мс. А вот якобы быстрая XML писалка: Код: 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. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. Причем дело не в записи на диск. Код: 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. Неужели операции со строками настолько тормозные? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2017, 21:24:35 |
|
||
|
Создание xml
|
|||
|---|---|---|---|
|
#18+
У автора проблема не в скорости, а в том, что XML-данные надо в потоке писать из-за их объема. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2017, 21:27:38 |
|
||
|
Создание xml
|
|||
|---|---|---|---|
|
#18+
JaDi, Объем как раз и приводит к проблемам со скоростью. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2017, 21:33:26 |
|
||
|
Создание xml
|
|||
|---|---|---|---|
|
#18+
rgreat А вот якобы быстрая XML писалка: Закопай обратно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2017, 21:40:57 |
|
||
|
Создание xml
|
|||
|---|---|---|---|
|
#18+
rgreat, Как показывает практика, скорость записи, если речь конечно о файлах до 100-300Мб, SSD и ОС начиная с Висты, упирается в такты, а не ожидание винта, потому что по сути запись идёт в ОЗУ, а на диск оно сбрасывается спустя время. И здесь важна оптимизация по регистрам, инлайны, не говоря уже о высоких материях типа конвертации, проверок, присвоение вместо Move, вызов дополнительных функций. Конкатенациях строк - это отдельная прожорливая штука. Потому, что надо выделить память в менеджере, скопировать, очистить. Всё это оборачивается try/finally и interlocked методами. Очень хорошо иллюстрируется разница в примере по CachedBuffers. Ручная низкоуровневая запись обходится в 109мск. А человеческая, "высокоуровневая", хоть и жутко оптимизированная - уже 265мск. То есть вопросы кеш-промахов и ожиданий диска, о чем любят говорить противники чрезмерной оптимизации, просто не играют сколько-нибудь значимой роли. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2017, 00:03:53 |
|
||
|
Создание xml
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOU, авторТо есть вопросы кеш-промахов и ожиданий диска, о чем любят говорить противники чрезмерной оптимизации, просто не играют сколько-нибудь значимой роли. До тех пор, пока размер данных не упрётся в кэш веника. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2017, 00:45:05 |
|
||
|
Создание xml
|
|||
|---|---|---|---|
|
#18+
makhaon, Наверное, да. Но в этом случае разница по скорости будет уже не в 50 раз, а в 25. Что само по себе не мало ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2017, 00:49:22 |
|
||
|
Создание xml
|
|||
|---|---|---|---|
|
#18+
schirgreat А вот якобы быстрая XML писалка: Закопай обратно Откопай быструю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2017, 01:14:40 |
|
||
|
Создание xml
|
|||
|---|---|---|---|
|
#18+
schi, Дело хорошее, но, судя по тестам, работает в 5 раз медленнее возможного ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2017, 11:26:06 |
|
||
|
Создание xml
|
|||
|---|---|---|---|
|
#18+
rgreatНеужели операции со строками настолько тормозные? > WriteToBuff(' '+Name+'="'+Value.ToString+'">'); Сложение строк и понятие "быстрый" в Delphi несовместимое понятие. Надо делать inline-функции типа WriteChar, WriteBuf и вызывать их по-очереди. Разумеется, при условии что в них не что-то вроде: "Buf := Buf + Text;". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2017, 11:51:24 |
|
||
|
Создание xml
|
|||
|---|---|---|---|
|
#18+
SOFT FOR YOUschi, Дело хорошее, но, судя по тестам, работает в 5 раз медленнее возможного Но что характерно, без ошибок. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2017, 12:38:15 |
|
||
|
Создание xml
|
|||
|---|---|---|---|
|
#18+
schi, Ну так и через CachedBuffers без ошибок ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2017, 12:53:41 |
|
||
|
Создание xml
|
|||
|---|---|---|---|
|
#18+
alekcvp, alekcvpСложение строк и понятие "быстрый" в Delphi несовместимое понятие. в других языках, впрочем, тоже ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2017, 13:53:04 |
|
||
|
Создание xml
|
|||
|---|---|---|---|
|
#18+
igor_prgСлыхал, что есть другие способы создания xml-файлов, без хранения всего дерева. Microsoft XML Lite например https://github.com/the-Arioch/Delphi-XmlLite/tree/master/Samples/DynArrays to-from files ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2017, 14:27:28 |
|
||
|
Создание xml
|
|||
|---|---|---|---|
|
#18+
igor_prgЯ так в самом начале и сделал. Но если в тексте будут какие-то спецсимволы (типа "&"), то xml файл не пройдет валидность для этого есть escaping-функции ( например в составе Jedi CodeLib ) но все равно останется вопрос с CDATA-блоками, сбалансированным открыванием-закрыванием тээгов и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2017, 14:30:10 |
|
||
|
Создание xml
|
|||
|---|---|---|---|
|
#18+
alekcvp"direct XML writer". Например, OmniXML пишет что в нём есть Возможно, имеет смысл попробовать OXml, но OmniXML... Функции direct XML writer я в нем не искал, а вот чтение монстрового XLSX файла пробовал (очень удачно прислали медвежуть, сформированную каким-то надмозгом). Сравнительно с банальным Microsoft XML v6 через TXMLDocument этот Omni жрал заметно больше памяти и заметно медленнее работал. Нет, для Дельфи он действительно весьма удбный и приятный для использования на малых и средних файлах, но рекорды по объёму/скорости я бы на нём ставить даже не пытался. Впрочем, я вообще в этом плане извращенец и маленькие XML файлы обычно лени ради читаю через JSON SuperObject ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2017, 14:34:40 |
|
||
|
Создание xml
|
|||
|---|---|---|---|
|
#18+
rgreatSOFT FOR YOUP.S. В тесте как раз разница в 50 раз относительно TStringList :) Да уж. Быстродействие впечатляет. TStringList - сам по себе очень медленный и жадный до памяти класс. В нём слишком много свисков и перделок на каждый чих. Если уж хочется скорости и объёмов, то надо вместо него использовать TList<string> ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2017, 14:35:50 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39483097&tid=2042063]: |
0ms |
get settings: |
7ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
168ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
34ms |
get tp. blocked users: |
1ms |
| others: | 212ms |
| total: | 452ms |

| 0 / 0 |
