|
|
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
AndrFЭто не совершенно баг, а просто для каждого объединения строк VB приходится перераспределять память, а чем больше строки участвующие в объединении тем дольше это происходит. Это совершенно не зависит от языка разработки - везде так.Это не так. Я вставлял этот clsConcat в .net'овский проект, так он проигрывал .net-конкатенации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2010, 17:40 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
Antonariy, AndrF, Shocker.Pro, спасибо, на этот раз похоже действительно выручили. Обработка стала гораздо быстрее, в своём роде небольшое чудо. Пока еще не всё попробовал, но уже видны результаты. Я всё-таки был уверен, что если Майкрософт действительно хорошая фирма, то у них это можно как-то сделать :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2010, 22:51 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
Shocker.ProЯ так думаю, чтоб если бы ядро не пыталось каждый выделить непрерывный кусок памяти под это дело, а использовало разумную фрагментацию, то работало бы это быстрее. Так что относительно - все-таки баг. И в каком это языке под строковую переменную выделяется фрагментированная память? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2010, 02:56 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
motorwayПока еще не всё попробовал, но уже видны результаты. Если в моем примере функцию ConvS заменить на нижеприведенную, то результаты будут еще в несколько раз лучше... Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2010, 02:58 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
AndrFmotorwayПока еще не всё попробовал, но уже видны результаты. Если в моем примере функцию ConvS заменить на нижеприведенную, то результаты будут еще в несколько раз лучше... Пардон - код вставился неправильно. Возьмите функцию из собственно приложенного примера. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2010, 03:01 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
AndrFShocker.ProЯ так думаю, чтоб если бы ядро не пыталось каждый выделить непрерывный кусок памяти под это дело, а использовало разумную фрагментацию, то работало бы это быстрее. Так что относительно - все-таки баг. И в каком это языке под строковую переменную выделяется фрагментированная память? не знаю, но это было бы логично для длинных переменных Опять же, Антонарий говорит, что .NET работает в этом плане лучше, стало быть так наверное там и сделано. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2010, 09:38 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
Shocker.ProОпять же, Антонарий говорит, что .NET работает в этом плане лучше, стало быть так наверное там и сделано. Не так ;) Насколько я знаю выделяемая под переменную память нигде не фрагментируется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2010, 10:02 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
Я не знаю, как там сделано, знаю только результаты теста — использование StringBuilder'а выйгрыша не дает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2010, 11:17 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
AntonariyЯ не знаю, как там сделано, знаю только результаты теста — использование StringBuilder'а выйгрыша не дает. По сравнению с чем? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2010, 12:00 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
С конкатенацией, тысяча чертей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2010, 12:26 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
AntonariyЯ не знаю, как там сделано, знаю только результаты теста — использование StringBuilder'а выйгрыша не дает. Кстати, [q]String[/q] как переменная безусловно нигде не фрагментируется. А вот внутри NET-овского [q]StringBuilder[/q]-a фрагментирование блоками заданного размера возможно - именно за счет этого он и может выдавать большую скорость чем приведенные в ветке варианты на VB6 (так как нет нужды переписывать блоки - достаточно только добавлять). Написать аналогичный класс на VB6 так же вполне возможно, причем без особых проблем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2010, 12:32 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
AntonariyС конкатенацией, тысяча чертей. А попробовать: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Ну и аналогично можно в VB6. Правда там будет на больших числах заметно большее замедление - надо переделать класс а-ля NET. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2010, 12:38 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
Пока что мои проблемы не закончились, и битва продолжается. Некоторые процедуры пока выполняются около 30 сек. Пытаюсь ускорить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2010, 17:43 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
AntonariyС конкатенацией, тысяча чертей. Спасибо за код класса, применил у себя, получил ускорение формирования отчета примерно в 10000 раз (правда на отчете за целый год, который обычно не используется). Обычно пишу в камментах к чужому коду ссылку на источник и автора по возможности... Тебя указывать? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2010, 17:51 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
Ударение на "Тебя", а не на "указывать" [/i] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2010, 20:05 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
Появилась проблема с этим классом. Раньше у меня переменные были как строки, а мне нужно использовать str=Mid(str, 1, Len(str) - 3), и пишет, что не поддерживается такой метод. Как быть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2010, 21:54 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
motorwayПоявилась проблема с этим классом. Раньше у меня переменные были как строки, а мне нужно использовать str=Mid(str, 1, Len(str) - 3), и пишет, что не поддерживается такой метод. Как быть? Добавьте в метод Append параметр предварительной очистки: получится типа: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2010, 22:04 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
А можно встроить метод Mid прямо в класс. И в конце-концов через год получится .NET ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2010, 22:07 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
Спасибо, сделал по-другому - нужно было просто писать str.Result, и тогда это воспринимается как строка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2010, 22:07 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
motorwayСпасибо, сделал по-другому - нужно было просто писать str.Result, и тогда это воспринимается как строка. Ну, разумеется, я думал это проблему не вызывает. Однако, вам же что-то надо решить и с левой частью выражения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2010, 22:11 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
Я присвоил это новой строке с другим именем :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2010, 22:12 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
AndrFА попробовать: Я говорил про самодельный StringBuilder (которые есть в вашем примере, в моем под именем clsConcat ), а не System.Text.StringBuilder. Сколько повторять? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2010, 23:06 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
Так... вот еще одна проблема - загрузка данных в ячейки из файла (данные хранятся в виде строки). Занимает около 22 сек. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Вроде бы ведь до этого получалось ускорить такого рода парсинг, а тут опять тормозит. Можно как-то ускорить это? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2010, 23:10 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
Shocker.ProAntonariyС конкатенацией, тысяча чертей. Спасибо за код класса, применил у себя, получил ускорение формирования отчета примерно в 10000 раз (правда на отчете за целый год, который обычно не используется). Обычно пишу в камментах к чужому коду ссылку на источник и автора по возможности... Тебя указывать? :)Не я его придумал. Кстати загляни . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2010, 23:11 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
motorwayТак... вот еще одна проблема - загрузка данных в ячейки из файла (данные хранятся в виде строки). Откуда нам знать, что в этой строке не стопицот мегабайт и это отличный результат? motorwayВроде бы ведь до этого получалось ускорить такого рода парсинг, а тут опять тормозит.Так ничему и не научился. Это печально :( Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2010, 23:19 |
|
||
|
|

start [/forum/topic.php?fid=60&msg=36560928&tid=2159730]: |
0ms |
get settings: |
8ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
44ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
2ms |
| others: | 204ms |
| total: | 333ms |

| 0 / 0 |
