|
Операции чтения/записи через OpenXML SDK в сотни раз медленнее, чем через сам Excel
|
|||
---|---|---|---|
#18+
Здравствуйте! SAX подход несколько быстрее, чем DOM, но все же не идет ни в какое сравнение с тем как быстро идет, например, вставка через сам Excel. Откуда берется такая разница? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2017, 10:54 |
|
Операции чтения/записи через OpenXML SDK в сотни раз медленнее, чем через сам Excel
|
|||
---|---|---|---|
#18+
iMrTidy, оптимизации. если взять библиотеку для работы с Excel — Aspose Cells , она работает ещё быстрее, чем Excel, и вообще быстрее ничего я ещё не видел. но она платная, конечно :) ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2017, 11:25 |
|
Операции чтения/записи через OpenXML SDK в сотни раз медленнее, чем через сам Excel
|
|||
---|---|---|---|
#18+
Aspose Cells, Неужели можно наоптимизировать тот же SAX, что будет работать в 100 раз быстрее? Мне кажется, что речь идет о каком-то кардинально другом подходе, которым Майкрософт не захотел делиться, открыв тем самым дверь для коммерческих вариантов. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2017, 13:33 |
|
Операции чтения/записи через OpenXML SDK в сотни раз медленнее, чем через сам Excel
|
|||
---|---|---|---|
#18+
iMrTidySAX подход несколько быстрее, чем DOM, но все же не идет ни в какое сравнение с тем как быстро идет, например, вставка через сам Excel. Откуда берется такая разница? не в парсере дело(хотя и в нём что-то можно отжать)), а в о внутреннем представлении документа, которое вовсе не DOM-дерево ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2017, 14:58 |
|
Операции чтения/записи через OpenXML SDK в сотни раз медленнее, чем через сам Excel
|
|||
---|---|---|---|
#18+
Изопропил, Сохраняется документ как набор зипованых XML файлов, т.е. в конечном счете и Excel сохраняет все как DOM-дерево, только в разы быстрее. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2017, 15:11 |
|
Операции чтения/записи через OpenXML SDK в сотни раз медленнее, чем через сам Excel
|
|||
---|---|---|---|
#18+
iMrTidy, я о внутреннем представлении собственно в Excel . а внутреннее представление влияет на скорость XML сериализации-десериализации ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2017, 15:15 |
|
Операции чтения/записи через OpenXML SDK в сотни раз медленнее, чем через сам Excel
|
|||
---|---|---|---|
#18+
Изопропил, Тогда логично будет спросить, а почему они не сделали похожий подход в OpenXML? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2017, 15:23 |
|
Операции чтения/записи через OpenXML SDK в сотни раз медленнее, чем через сам Excel
|
|||
---|---|---|---|
#18+
iMrTidyЗдравствуйте! SAX подход несколько быстрее, чем DOM, но все же не идет ни в какое сравнение с тем как быстро идет, например, вставка через сам Excel. Откуда берется такая разница?Неужели в сто? Где пруф? Где тестовый пример? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2017, 15:25 |
|
Операции чтения/записи через OpenXML SDK в сотни раз медленнее, чем через сам Excel
|
|||
---|---|---|---|
#18+
refregiMrTidyЗдравствуйте! SAX подход несколько быстрее, чем DOM, но все же не идет ни в какое сравнение с тем как быстро идет, например, вставка через сам Excel. Откуда берется такая разница?Неужели в сто? Где пруф? Где тестовый пример? Вот пример , вместо Rand можно просто число, на рабочем компьютере заняло секунд 20, аналогичная операция в Excel менее секунды, это уже как минимум в 20 раз разница. Если DOM, то после 25 минут дело так и не дошло до конца. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2017, 15:40 |
|
Операции чтения/записи через OpenXML SDK в сотни раз медленнее, чем через сам Excel
|
|||
---|---|---|---|
#18+
iMrTidyИзопропил, Тогда логично будет спросить, а почему они не сделали похожий подход в OpenXML? чтоб эксель всегда был быстрее наколенных приблуд )) ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2017, 16:04 |
|
Операции чтения/записи через OpenXML SDK в сотни раз медленнее, чем через сам Excel
|
|||
---|---|---|---|
#18+
iMrTidyrefregпропущено... Неужели в сто? Где пруф? Где тестовый пример? Вот пример , вместо Rand можно просто число, на рабочем компьютере заняло секунд 20, аналогичная операция в Excel менее секунды, это уже как минимум в 20 раз разница. Если DOM, то после 25 минут дело так и не дошло до конца.Открыл Excel. Заполнил матрицу слчис 100*50000. Включил таймер. Нажал сохранить. Отключил таймер. 25 секунд. В примере 18 секунд (на своем компе пример не проверял) ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2017, 16:25 |
|
Операции чтения/записи через OpenXML SDK в сотни раз медленнее, чем через сам Excel
|
|||
---|---|---|---|
#18+
refreg, Кодом 6 секунд: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
Из буфера обмена, такой же объем, почти мгновенно. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2017, 17:26 |
|
Операции чтения/записи через OpenXML SDK в сотни раз медленнее, чем через сам Excel
|
|||
---|---|---|---|
#18+
iMrTidy, Нельзя одинаковое поле на все ячейки. При записи хак есть для этого (емнип). Или используй этот же хак в OpenXML. Сверь размеры получаемых файлов. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2017, 17:47 |
|
Операции чтения/записи через OpenXML SDK в сотни раз медленнее, чем через сам Excel
|
|||
---|---|---|---|
#18+
refreg, Если Вы про SharedStringTable, то в этом случае она не сработает, т.к. значение числовое. С размером все в порядке. Что кодом через Excel, что вставкой через буфер обмена, что OpenXML, структура получается одинаковой, т.е. 5 млн ячеек. Что значит хак? Что такое емнип? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2017, 17:59 |
|
Операции чтения/записи через OpenXML SDK в сотни раз медленнее, чем через сам Excel
|
|||
---|---|---|---|
#18+
iMrTidyrefreg, Если Вы про SharedStringTable, то в этом случае она не сработает, т.к. значение числовое. С размером все в порядке. Что кодом через Excel, что вставкой через буфер обмена, что OpenXML, структура получается одинаковой, т.е. 5 млн ячеек. Что значит хак? Что такое емнип?Ну 20 к 6 - это уже не 100 к 1. Дальше не интересно. Ищи ошибки в своих тестах. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2017, 18:29 |
|
Операции чтения/записи через OpenXML SDK в сотни раз медленнее, чем через сам Excel
|
|||
---|---|---|---|
#18+
refreg, Вот уж не думаю, что Вам было интересно разобраться в проблеме изначально. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2017, 09:59 |
|
Операции чтения/записи через OpenXML SDK в сотни раз медленнее, чем через сам Excel
|
|||
---|---|---|---|
#18+
iMrTidyrefreg, Вот уж не думаю, что Вам было интересно разобраться в проблеме изначально.Почему же. Я же указал, в чем была проблема первого теста 20836800 . Досконально, с каждым придуманным тестом возиться нет желания. А библиотека хороша хотя бы тем, что не требует установленного офиса... Если наличие Excel для проекта некритично, выбирай что быстрей нравится. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2017, 11:29 |
|
Операции чтения/записи через OpenXML SDK в сотни раз медленнее, чем через сам Excel
|
|||
---|---|---|---|
#18+
refreg, Ваша позиция мне ясна. Давайте, не будем тратить время на бесполезный оффтоп? Возможно, кому-то пригодится. Результат на текущий момент. 1. Создание 5 млн ячеек при помощи OpenXML DOM занимает более 25 минут. Кстати, на сайте Майкрософт ошибка, о чем я им указал . 2. Создание 5 млн ячеек при помощи OpenXML SAX занимает порядка 20 секунд . 3. Создание 5 млн ячеек через Excel VBA (пример был выше) занимает порядка 6 секунд. 4. Создание 5 млн ячеек вставкой в Excel через буфер обмена менее 1 секунды. После весьма основательного ресерча в Интернете и ряда тестов, я пришел к выводу, что 1. Быстрее чем SAX через OpenXML сделать не получится. Почему такая разница между 3,4 и 1 можно только предполагать. 2. Вероятно, DOM медленно работает с большими объемами, т.к. все дерево загружается в память, и каждое создание/обращение к ячейке приводит к прохождению по дереву, т.е. чем больше ячеек тем медленне и медленне становится работа. 3. Работать с SAX менее удобно, чем с DOM, особенно, если нужно создавать/обновлять выборочные ячейки в уже имеющемся документе. 4. DOM прекрасно справляется с объемами до 10 000 ячеек как чтение, так и запись. В большинстве случаев занимает менее секунды. 5. DOM методом довольно быстро и просто получилось написать библиотеку для работы с Excel, которая позволяет обращаться к Sheets и Ranges почти как в Excel, и в то же время позволяет рабоать с LINQ. К сожалению, не могу поделиться кодом, но указанных ссылок должно быть достаточно, чтобы разобраться что к чему. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2017, 12:39 |
|
Операции чтения/записи через OpenXML SDK в сотни раз медленнее, чем через сам Excel
|
|||
---|---|---|---|
#18+
iMrTidy, Все таки, в твоих тестах путаница между созданием и сохранением. Где пункт, что Excel сохраняет 5 млн ячеек 25 секунд? iMrTidyВаша позиция мне ясна. Давайте, не будем тратить время на бесполезный оффтоп?Ок ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2017, 13:18 |
|
Операции чтения/записи через OpenXML SDK в сотни раз медленнее, чем через сам Excel
|
|||
---|---|---|---|
#18+
refregГде пункт, что Excel сохраняет 5 млн ячеек 25 секунд? У меня такого примера нет. Для чего указывать неэффективные алгоритмы? Все указанные мною примеры вместе с сохранением (за исключением DOM, не стал ждать). Все тестировалось в одинаковых условиях, в ячейки вносилось одно и то же число, файл изначально был пустой. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2017, 13:36 |
|
Операции чтения/записи через OpenXML SDK в сотни раз медленнее, чем через сам Excel
|
|||
---|---|---|---|
#18+
iMrTidy, Отработало за 7 секунд: Код: c# 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2017, 14:28 |
|
Операции чтения/записи через OpenXML SDK в сотни раз медленнее, чем через сам Excel
|
|||
---|---|---|---|
#18+
После этого: Код: c# 1. 2.
Отработало за 4.5 сек ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2017, 14:30 |
|
Операции чтения/записи через OpenXML SDK в сотни раз медленнее, чем через сам Excel
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2017, 17:53 |
|
Операции чтения/записи через OpenXML SDK в сотни раз медленнее, чем через сам Excel
|
|||
---|---|---|---|
#18+
iMrTidyrefreg, А вот это уже интересно, а сколько у Вас занимает вставка через Excel: 20837010 4765 ms ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2017, 20:43 |
|
|
start [/forum/topic.php?fid=20&msg=39529371&tid=1399683]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
65ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
others: | 334ms |
total: | 487ms |
0 / 0 |