|
|
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
Привет всем. Есть файл Эксела с рабочей областью около 20000 ячеек, с помощью макросов на VBA обеспечивается передача данных на сервер вычислителю и обработка поступивших от него данных. Данные посылаются и принимаются в виде строки. Для данного файла это около 200 кБ. Основная проблема во времени. Для 7000 ячеек, например, формирование строки занимает около 10 секунд, а обработка поступивших данных и их отображение в таблице - около 1 мин 20 сек. Для такого размера таблицы это много. А для 20000 ячеек вообще чуть ли не 20 минут все это делается. Конечно, можно передавать только изменившиеся по сравнению с прошлым вариантом ячейки, но если их будет много, то все равно нужно ускорить это. Сейчас все это делается в цикле, каждой ячейке присваивается полученное значение. Здесь в принципе тоже можно сократить объем данных, если обновлять только изменившиеся ячейки. Но даже так может получаться общее время около 1 мин. Нет ли способа принципиально это ускорить? Может быть, с помощью базы данных - генерировать файл БД в формате .mdb, а затем макросом вставлять данные из неё. Сам код функции разбора полученной с сервера строки (лишние маловажные части убраны): Код: 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. Что-то можно с этой проблемой сделать или нет (очень долгая обработка)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2010, 23:28 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
motorwayСам код функции разбора полученной с сервера строки (лишние маловажные части убраны) Насколько я понимаю Код: plaintext 1. Опыт подсказывает мне, что время тут расходуется на то, чтобы ворочать большой массив текстовых данных в памяти. Поэтому я бы рекомендовал прежде всего избавится от этого. motorwayгенерировать файл БД в формате .mdb, а затем макросом вставлять данные из неё. Почему бы вам не генерировать из СУБД непосредственно экселевский файл через ODBC? Потом можно пройтись макросом по ячейкам, расставить нужные цвета, это будет довольно быстро... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2010, 00:04 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. Так, по мелочи... вы слышали о том, что у оператора If есть еще часть Else? Записав это так: Код: plaintext 1. 2. 3. 4. 5. 6. вы ускорите раза в два выполнение этого фрагмента.... хотя, конечно, это не решает общей проблемы.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2010, 00:12 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
Shocker.ProПочему бы вам не генерировать из СУБД непосредственно экселевский файл через ODBC? Потом можно пройтись макросом по ячейкам, расставить нужные цвета, это будет довольно быстро... У меня данные посылаются скрипту PHP на сервере. Про СУБД я написал в том смысле, что можно посылать результат с сервера не в виде строки, а в виде файла .mdb. Имеет смысл это? Думаю, основное время в моем коде тратится на цикл, а не на первые строки ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2010, 00:23 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
Shocker.ProПочему бы вам не генерировать из СУБД непосредственно экселевский файл через ODBC? Потом можно пройтись макросом по ячейкам, расставить нужные цвета, это будет довольно быстро... Ну или подключиться из экселя к БД и заполнять данные из рекордсета (без всяких массивов в памяти). Если еще и открыть серверный курсор ForwardOnly, ReadOnly, то можно сэкономить время на том, что данные будут обрабатываться по мере поступления, без перегрузки кучи информации на клиента с выделением под них памяти. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2010, 00:24 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
К тому же, важно не создавать новый файл, а чтобы вся операция происходила в текущем открытом файле при запуске макроса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2010, 00:26 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
Shocker.ProShocker.ProПочему бы вам не генерировать из СУБД непосредственно экселевский файл через ODBC? Потом можно пройтись макросом по ячейкам, расставить нужные цвета, это будет довольно быстро... Ну или подключиться из экселя к БД и заполнять данные из рекордсета (без всяких массивов в памяти). Если еще и открыть серверный курсор ForwardOnly, ReadOnly, то можно сэкономить время на том, что данные будут обрабатываться по мере поступления, без перегрузки кучи информации на клиента с выделением под них памяти. Примерно это я имел в виду, можно попробовать подключиться к Аксессу, но для этого надо будет посылать с сервера файл этот, либо подключаться к удаленной БД на сервере. Только при этом важно, чтобы на текущем листе в Экселе остались примечания, стили и т.п. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2010, 00:28 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
motorwayДумаю, основное время в моем коде тратится на цикл, а не на первые строки Надо не думать, а проверить. Поставьте оператор Debug.Print Now в нужных местах и посмотрите. Правда часть времени работы с массивами есть еще внутри цикла, а также в скрытом виде при перемещении курсора по нему. motorwayУ меня данные посылаются скрипту PHP на сервере. Про СУБД я написал в том смысле, что можно посылать результат с сервера не в виде строки, а в виде файла .mdb. Имеет смысл это? Почему именно в mdb? Какая у вас СУБД? и как она порождает mdb-файл? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2010, 00:28 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
В скрипте на выходе есть строка. Сейчас она передается в чистом виде без использования СУБД. Хотя есть возможность (дополнительная) сохранять все в MySQL. С Аксессом просто легче работать в Экселе. А саму таблицу(ы) можно генерировать на PHP. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2010, 00:32 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
motorwayВ скрипте на выходе есть строка. Сейчас она передается в чистом виде без использования СУБД. Хотя есть возможность (дополнительная) сохранять все в MySQL. С Аксессом просто легче работать в Экселе. А саму таблицу(ы) можно генерировать на PHP. Брр... Что за цепочка порочная: MySQL => PHP => Строка => Массив => Ячейки экселя У вас есть возможность брать данные из (подключиться к) MySQL, минуя скрипт? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2010, 00:34 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
Смотрите, данные посылаются из ячеек Эксела на сервер по HTTP. PHP производит их обработку основную и на выходе у него есть строка. Можно их записать в MySQL, чтобы не посылать строку. Тогда надо будет подключаться из Эксела к MySQL, которая на сервере и оттуда брать данные. Это реально? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2010, 00:43 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
В любом случае результаты работы PHP скрипта должны попасть в таблицу. Это можно сделать либо парся строку, либо получая их из MySQL на сервере, подключившись к нему. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2010, 00:45 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
motorwayСмотрите, данные посылаются из ячеек Эксела на сервер по HTTP. PHP производит их обработку основную и на выходе у него есть строка. Можно их записать в MySQL, чтобы не посылать строку. Тогда надо будет подключаться из Эксела к MySQL, которая на сервере и оттуда брать данные. Это реально? Вообще-то это я вас спрашиваю, реально ли это? То есть технических проблем получить доступ через ADO к MySQL нет. Но может у вас там запрещен доступ к базе и нельзя его разрешить. motorwayВ любом случае результаты работы PHP скрипта должны попасть в таблицу. Это можно сделать либо парся строку, либо получая их из MySQL на сервере, подключившись к нему. Непонятно. Результаты работы скрипта попадают в БД или нет? Есил не попадают, то причем тут MySQL? Если попадают, возвращаемся к первому вопросу - есть ли возможность подключения к базе? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2010, 00:49 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
Насчет возможности подключения к базе извне точно не знаю, MySQL обычная на хостинге, не знаю, они разрешают там или нет подключаться так. Данные сейчас можно записывать в базу просто как доп. функция , так как сейчас они просто приходят в виде строки и не сохраняются специально в базу. Но если это нужно для ускорения их отображения в Экселе, то можно результаты работы скрипта PHP сохранять в базу MySQL, и тогда уже к ней подключаться, а никакую строку большую не посылать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2010, 01:04 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
Не, ну специально перегружать в базу готовую строку наверное нет смысла. Давайте попробуем тогда обойтись без массива при разборе строки. Вот я пример набросал, только у меня ваших данных нет, проверить не на чем, надеюсь, если там опечатки, поправите сами. Предполагаются валидные данные, если могут быть проблемы с валидностью - надо дописывать условия. Впрочем, у вам там тоже проверок особо нет. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2010, 01:23 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
Кстати, ваши замеры: 7000 ячеек - 1,33 мин 20000 ячеек - 20 мин показывают непропорциональное увеличение времени при увеличении размера данных. Это скорее всего указывает на мою правоту, что это связано с перераспределением памяти под массивы, а не самой обработкой. Впрочем, вы привели не весь код, так что там тоже может что-то скрываться, что недоступно для анализа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2010, 01:29 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
Строка имеет вид примерно такой: Лист1|A1|3`Лист1|A2|4`.... и т.п., насколько я помню (или Лист1|A|1|3`...). Весит она около 200 кб в данном примере. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2010, 01:32 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
motorwayСтрока имеет вид примерно такой: Лист1|A1|3`Лист1|A2|4`.... и т.п., насколько я помню (или Лист1|A|1|3`...). Весит она около 200 кб в данном примере. Это я заметил, и если вы заметили, под нее сделал обработчик. Я говорю о том, что там должно быть строгое чередование "xxx|xxx|xxx`xxx|xxx|xxx`" если этого не будет, алгоритм сбойнет. Либо вы надеетесь на валидность поступающих данных, либо проверяете их. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2010, 01:37 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
Прикладываю пример файла, только он сокращен раза в 4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2010, 01:51 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
ага, ну вот ошибочка в одной строке, надо Код: plaintext в остальном работает - тестируйте скорость. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2010, 02:05 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
Shocker.PromotorwayВ скрипте на выходе есть строка. Сейчас она передается в чистом виде без использования СУБД. Хотя есть возможность (дополнительная) сохранять все в MySQL. С Аксессом просто легче работать в Экселе. А саму таблицу(ы) можно генерировать на PHP. Брр... Что за цепочка порочная: MySQL => PHP => Строка => Массив => Ячейки экселя+100500 Должно быть MySQL => PHP => экселевский файл в формате xml. Если же причесывать то, что быть не должно… Вот эта бредятина: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2010, 11:44 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
Спасибо за помощь. Протестировал два варианта кода - мой прошлый и с вашими изменениями. Результаты немного странные. Правда, хочу отметить, что те 20 минут, о которых я говорил до этого, вызывались записью большого объема данных в ячейки, т.е. там была еще одна функция, которая все тормозила. Я ее пока убрал, и вот что получилось (время с точностью около 5%): для 8169 ячеек старый код - 1 мин 40 сек, новый - 1 мин. для 18967 ячеек старый код - 5 мин, новый - около 5 мин и 5 сек. То есть, странная вещь вышла - для не очень большого файла этот код дает ускорение, а для большой таблицы даже немного дольше стало. Но главное, видно, что нужно еще ускорять принципиально - 5 минут ждать это не вариант, а ведь там еще есть места, которые надо ускорять. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2010, 21:41 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
Я все-таки склоняюсь к мысли, что 20000 ячеек не так много, и для этого случая должны были уже изобрести какой-то нормальный способ. Ведь работают же с терабайтными базами. Если попробовать вставить данные из Аксесса (1500 строк и 13 столбцов), то это делается почти мгновенно. А здесь очень медленно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2010, 23:05 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
motorwayЯ все-таки склоняюсь к мысли, что 20000 ячеек не так много, и для этого случая должны были уже изобрести какой-то нормальный способ.У вас не нормальный источник данных, а свойство Range тормозное, поэтому имеем то, что имеем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2010, 23:08 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
Antonariy, ну, а допустим мы это строку будем записывать в БД сначала, а потом оттуда брать данные - так можно рассчитывать на нормальную скорость? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2010, 23:12 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
motorwayЯ все-таки склоняюсь к мысли, что 20000 ячеек не так много, и для этого случая должны были уже изобрести какой-то нормальный способ. Ведь работают же с терабайтными базами. Если попробовать вставить данные из Аксесса (1500 строк и 13 столбцов), то это делается почти мгновенно. А здесь очень медленно Вы не путайте, эксель не является СУБД и не оптимизирован на работу с данными motorwayAntonariy, ну, а допустим мы это строку будем записывать в БД сначала, а потом оттуда брать данные - так можно рассчитывать на нормальную скорость? Нет. Тормоза идут не при получении данных, а при работе с ячейками. Это (если в лоб) непреодолимое препятствие. Поскольку исходными данными является строка, то нет смысла грузить ее в базу. То бишь, вы можете создать csv-файл (просто заменив "|" на ",", а "`" на конец строки. Это позволит очень быстро загрузить данные в эксель (не устраивая этот тормозной цикл). Но вы хотите красить ячейки на ходу - и вот тут начинается проблема тормозами. Поскольку ваша задача не совсем ясна, да и часть кода вы нам не дали, мы не можем дать более точный совет. Возможно вам вообще не нужен эксель и можно обойтись аксессом или, скажем, веб-клиентом. Всякие покраски можно тоже реализовать иначе (но, правда, для этого иначе должны формироваться исходные данные). Скажем, располагаться рядом ячейки со старым и новым значением. А покрасить изменившиеся можно (если не ошибаюсь) формулой или пробежаться макросом уже после загрузки данных. В общем, если хотите глобальных советов - придется вам развернуть контест как можно подробнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2010, 23:51 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
Моя система состоит из Эксела и скрипта на сервере, производящего вычисления. Работает это по типу SaaS. Производятся некоторые вычисления, например, финансовые. Для этого данные из Эксела посылаются скрипту, он вычисляет всё и возвращает результат. Эксел нужен для удобного ввода данных - формулы+значения+редактирование таблицы (стили, шрифты и т.п.). Т.е. почти все как в обычном Экселе, только данные посылаются скрипту. Веб-клиентом я пробовал обойтись, но там не хватает многих функций Эксела. Именно Эксел вполне удобное средство для ввода данных и их просмотра. Главное, чтобы все это работало с приемлемой скоростью. Та система, какая сделана сейчас - тормозит. Наверно, сюда можно приделать либо Аксесс, либо сохранять и загружать все данные из MySQL на сервере, но главное, чтобы тоже было быстро. И куда деться от этих тормозов? Основные вещи делают макросы... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2010, 00:33 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
Не, ну система понятна (значит варианты клиента, кроме экселя, не обсуждаем), но вы не уловили главного. Запись с помощью макроса такого объема данных - процесс долгий. Чтобы принципиально его ускорить - надо отказаться от записи ячеек макросом (один из вариантов - csv - я предложил). Но сложно предполагать, что там у вас с форматированием и т.п. Кстати, вы упоминали о том, что можно было бы передавать только измененные данные - до какого количества ячеек это уменьшит объем передаваемых данных? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2010, 00:48 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
Насчет того, что макросы долго все это делают, я уловил, конечно - потестил, и настроение подпортилось. В таблице может быть большое количество ячеек с разными шрифтами, стилями и примечаниями. Вот, кстати, обработка примечаний - еще одна медленная вещь. Мне нужно скидывать иногда текст из примечаний в ячейки сами - и для такой таблицы это тоже долго очень. Тут уж вряд ли что-то поможет, может, у вас тоже идеи есть? :) Если только изм. передавать - ну это смотря сколько менять на входе и сколько при этом меняется в результатах. Допустим, изменили 1 ячейку. При этом может измениться в результатах 1-10, а иногда может и много - может быть, даже 1000. А вот если менять штук 10-100, то может большая часть, около 50% измениться. То есть, сокращение может быть от 2 до 100 раз где-то, я думаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2010, 01:17 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
Основные тормоза в данном случае из-за кучи обращений к отдельным ячейкам (проверка цвета, присвоение значения, присвоение цвета). Присваивайте значения одной командой - через массив или Recordset. Аналогично надо сделать и с раскраской. В итоге все будет работать моментально. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2010, 09:51 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
Если вместо Range использовать Cells, будет быстрее. Однако, чем, собственно, не устраивает генерация уже готового и раскрашенного файла на сервере? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2010, 10:38 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
Набросал простенький примерчик - 50 тыс строк заносятся и форматируются примерно за секунду: Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2010, 12:04 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
Shocker.ProПоскольку исходными данными является строка, то нет смысла грузить ее в базу. То бишь, вы можете создать csv-файл (просто заменив "|" на ",", а "`" на конец строки. Это позволит очень быстро загрузить данные в эксель (не устраивая этот тормозной цикл). Но вы хотите красить ячейки на ходу - и вот тут начинается проблема тормозами. Есть, кстати, еще один примитивный способ быстрого создания и заполнения Excel-евского файла, кроме того что я привел чуть выше. Просто создаем htm-файл с таблицей, заполняя его нужными строками с нужным форматированием, потом открываем его Excel-ем, делаем окончательную обработку/форматирование и сохраняем его уже в формате Excel. Дюже просто и сердито. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2010, 12:24 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
AntonariyОднако, чем, собственно, не устраивает генерация уже готового и раскрашенного файла на сервере? Допустим, пользователь считает какую-то финансовую модель и нажимает кнопку "Вычислить". При этом он ожидает сразу увидеть результаты, а не скачивать еще один файл с результатами. Так будет долго и неудобно. А насчет Recordset - получится ли быстро считать около 10000 примечаний и поместить их в ячейки и наоборот, из ячеек в примечания? И раскраска - красятся же отдельные ячейки, можно ли их быстро закрасить таким способом, чтобы было за секунду? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2010, 17:23 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
AndrF, а что нужно дополнительно сделать, чтобы ваш пример работал? Пишет "User-defined type not defined" про Recordset ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2010, 17:25 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
motorwayAndrF, а что нужно дополнительно сделать, чтобы ваш пример работал? Пишет "User-defined type not defined" про Recordset Добавить референс на Microsoft ActiveX Data Objects ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2010, 17:29 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
Я сначала пробовал добавить, но другую - ADO. Получилось. А можно примерно таким же образом добавлять примечания или формулы в ячейку? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2010, 18:37 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
Я пока что не очень понял, будет ли такой способ нормально работать, если у нас есть список ячеек, который хотим обновить и значения для них (либо второй вариант - формулы, третий - примечания)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2010, 19:38 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
motorwayЯ пока что не очень понял, будет ли такой способ нормально работать, если у нас есть список ячеек, который хотим обновить и значения для них (либо второй вариант - формулы, третий - примечания)? Надо разбираться. По крайней мере для тупого заполнения таблицы и раскраски ее по формуле пример я привел. Остальное за так делать хоть и не столь сложно, но уже и не интересно ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2010, 22:29 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
А у 2007-го еще проще - посмотрел сейчас структуру xlsx-файла (можно открыть тем же WinRar-ом) - с ней вполне можно разобраться даже без описания. По крайней мере это явно не сложней чем chm-файлы, которые когда-то приходилось создавать из программы... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2010, 22:49 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
По сути, вот, что мне нужно - просто надежные способы: 1) быстро считать содержимое большого кол-ва ячеек, так чтобы его можно было послать на сервер/сохранить в файл. 2) быстро изменить содержимое большого кол-ва ячеек - присвоить значения (здесь может подойти вариант с csv или др.). 3) быстро считать содержимое большого кол-ва примечаний, чтобы можно было на основании их изменить содержимое ячеек/либо сохранить все примечания в файл. 4) быстро изменить большое кол-во примечаний. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2010, 00:11 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
motorwayПо сути, вот, что мне нужно - просто надежные способы: 1) быстро считать содержимое большого кол-ва ячеек, так чтобы его можно было послать на сервер/сохранить в файл. 2) быстро изменить содержимое большого кол-ва ячеек - присвоить значения (здесь может подойти вариант с csv или др.). 3) быстро считать содержимое большого кол-ва примечаний, чтобы можно было на основании их изменить содержимое ячеек/либо сохранить все примечания в файл. 4) быстро изменить большое кол-во примечаний. 1 и 2 проблем вообще нет - см выше, там было показано. Как и с форматированием зависящим от значений ячеек все примитивно. Самое сложное тут 3 и 4 - доступ к примечаниям по одному через объектную модель по одному будет все дико тормозить, а иначе вроде и невозможно. Так что если они действительно нужны, то реализовать все быстро можно только через самостоятельное создание xlsx/xlsm файла, разобравшись в его структуре - оно достаточно просто даже без изучения документации. Заодно и без Excel-я на компе тогда можно будет обойтись (если не конвертировать в старые версии Excel)... Для упрощения работы можно использовать заготовку, просто добавляя в нее нужные строчки... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2010, 01:46 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
Можно еще здесь почитать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2010, 01:49 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
AndrFТак что если они действительно нужны, то реализовать все быстро можно только через самостоятельное создание xlsx/xlsm файлаЛучше чистого xml (Сохранить как — Таблица XML), с зипом заморачиваться не надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2010, 11:08 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
AntonariyAndrFТак что если они действительно нужны, то реализовать все быстро можно только через самостоятельное создание xlsx/xlsm файлаЛучше чистого xml (Сохранить как — Таблица XML), с зипом заморачиваться не надо. Ему примечания нужны, а как их запихнуть в чистый XML мне не ведомо... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2010, 15:14 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
AndrFЕму примечания нужны, а как их запихнуть в чистый XML мне не ведомо...Так ить "Сохранить как — Таблица XML"… Имеем результат: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2010, 16:04 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
Всё-таки XML мне не очень подходит - результат должен появляться в том же открытом файле Эксела. Если уж совсем ничего не будет получаться, я могу это попробовать, но это крайний вариант. И потом, у меня файл .xlsm. Примечания - довольно критичная для меня вещь, они используются по полной программе. И обновлять их и получать данные из них нужно быстро. :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2010, 16:19 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
motorwayВсё-таки XML мне не очень подходит - результат должен появляться в том же открытом файле Эксела. Если уж совсем ничего не будет получаться, я могу это попробовать, но это крайний вариант. И потом, у меня файл .xlsm. Примечания - довольно критичная для меня вещь, они используются по полной программе. И обновлять их и получать данные из них нужно быстро. :( Так формируешь файл XML (тупо текстом), и только потом открываешь его Excel-ем, далее сохраняешь уже в нужном формате... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2010, 16:27 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
Т.е. вы имеете в виду перезапись - вместо текущего файла подставляется XML сгенерированный? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2010, 16:30 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
> Автор: motorway Почитав всю переписку, для себя я пришёл к следующему выводу. что для ускорения общей работы нужно - выбросить Ексель, вместо него написать специальную программу - перестроить схему работы следующим образом: Передача данных на сервер вычислителю -> вычислитель складывает обработанные данные в БД -> Программа выбирает данные для отображения и изменения из БД. Потому что вам нужно не просто отображение данных, а чуть-ли не on-line мониторинг, изменение и практически индивидуальное отображение каждого параметра. Ексель, со всей своей объектной структурой, не предназначен для мгновенного отклика. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2010, 16:54 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
Написать прогу, конечно, можно всегда, но по трудозатратам и качеству результата все будет хуже, чем при использовании Эксела. Я уже пробовал использовать покупные таблицы для организации веб-интерфейса, но получилось, что там многих нужных функций нет - автозаполнение и т.п. Реализовывать все это самостоятельно не очень-то хочется, проблем и так хватает. Даже основные функции Эксела долго реализовывать самостоятельно. Интерфейс нужен в виде электронной таблицы. Никаких сверх-требований вроде нет, просто используются основные возможности Эксела - шрифты, стили, примечания. Вещи все стандартные, просто данные передаются с помощью сети, ну и, может, примечаний много. А так все обычно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2010, 17:14 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
motorwayТ.е. вы имеете в виду перезапись - вместо текущего файла подставляется XML сгенерированный? Генеришь xml-файл, огрызок содержания которого привел Antonariy , далее открываешь его Excel-ем (можно при этом сделать окончательную доводку, если нужно) и сохраняешь в нужном формате. Кстати, давно было, но вроде если эту xml-ку переименовать в xls и запустить, то Excel ее вполне нормально откроет... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2010, 17:31 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
Все-таки, наверно, буду пытаться пока без xml ускорить все это дело. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2010, 18:16 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
А есть ли возможность использовать не VBA, а что-нибудь более быстрое для обновления ячеек и примечаний? Может, dll как-то использовать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2010, 18:39 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
Просто вы говорите о 20000 ячеек. Причем каждая может быть оформленна индивидуально. А это все время. Одно дело 100 000 ячеек заполнять как предлагал AndrF Код: plaintext одинаковый формат: Код: 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. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. цветовой градуировкой и спрятанными примечаниями, и при этом время обновления настолько критично, что пару минут уже много? Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2010, 18:45 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
Собственно, различные цвета и стили ячеек сейчас сделаны просто для удобства работы с большой моделью. При финансовых вычислениях часто по-разному выделяются конкретные ячейки, чтобы было понятнее. Но это как раз не предполагается менять. В основном я планировал менять цвет шрифта у изменившихся после вычислений ячеек, чтобы было видно, какие изменились. Потому что в большой таблице это отслеживать трудно. Примечания меняются не так часто, но иногда это нужно делать, а при этом ждать больше 30 секунд уже напряг. У меня просто так реализовано всё, что в примечаниях хранится доп. информация, которую нельзя поместить в ячейку сразу, так как там может быть уже число какое-то. Т.е., как бы еще одно измерение. Вручную пользователь обычно менять будет гораздо меньше, чем 20000 примечаний, но иногда, например при удалении строк, примечания должны автоматически обновиться для большого числа ячеек. В общем, пользователи будут довольно требовательные, скорее всего. Просто надо исходить из того, что они не привыкли в Экселе долго ждать, а если здесь будет больше ~20 секунд, уже начнутся мысли, стоит ли пользоваться этим. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2010, 18:55 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
Для измерений есть сводные таблицы, для самих данных есть специальный сервис OLAP называется и там есть свои стратегии хранения данных. Просто я прекрасно понимаю что человек при всем своем желании не сможет быстро даже осмотреть все двадцать тысяч, вообщем я уже говорил что в ексель, большие объемы данных частообновляемых данных лучше брать из БД, а не парсить раз за разом, потом можно пройтись и по рекордсету разукрасить ячейки и понаставить примечания, хотя именно это и будут самые времязатратные действия Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2010, 19:06 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
motorwayа если здесь будет больше ~20 секунд, уже начнутся мысли, стоит ли пользоваться этим. Сделайте правильный прогресс-индикатор. Это обычно в разы облегчает раздражение пользователя. ЗЫ: Можно выводить случайный анекдот ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2010, 19:09 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
Пользоваться системой будут, если получится, не обычные "одиночные пользователи", а люди из фирмы с большими запросами. Так что если такая ситуация будет на первом испытании системы, дальше они даже разговаривать не будут. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2010, 19:12 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
Что касается вариантов с формированием файла xml и последующим открытием. А кто сказал, что подобная операция (включая открытие файла с таким количеством записей) займет меньше 20 секунд?... так что, может и не выход ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2010, 19:14 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
> Автор: motorway > Пользоваться системой будут, если получится, не обычные "одиночные пользователи", а люди из фирмы с большими > запросами. Так что если такая ситуация будет на первом испытании системы, дальше они даже разговаривать не будут. :) Т.е. у тебя на тестовых данных затык, и нет вариантов как решить, что будет когда за дело примутся motorwayлюди из фирмы с большими запросами.? вообщем пробуй, здесь тебе понакидали идей :) удачи Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2010, 19:16 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
Ну то есть это не шутки, обычные пользователи могут и подождать, а когда подписывается договор с фирмой и т.п., то если качество не устраивает, то и дальше работать не будут. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2010, 19:18 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
Shocker.ProЧто касается вариантов с формированием файла xml и последующим открытием. А кто сказал, что подобная операция (включая открытие файла с таким количеством записей) займет меньше 20 секунд?... так что, может и не выход Ну мой пример в 50 тыс записей срабатывает где-то за секунду. А вообще приходилось в былые времена видеть Excel-евские файлы открывающиеся минут по 15..20. Где-то в 98-м году примерно - столько тогда в них бухгалтерия напихивала... Интересно - а автору топика действительно Excel-евский файл нужен, а не Grid??? А то гложет сомнение что может он не по той дороге вообще идет... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2010, 19:32 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
AndrFИнтересно - а автору топика действительно Excel-евский файл нужен, а не Grid??? А то гложет сомнение что может он не по той дороге вообще идет... Да как я понял, пользователи потом юзают функционал экселя, так что не выход... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2010, 19:37 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
Shocker.ProAndrFИнтересно - а автору топика действительно Excel-евский файл нужен, а не Grid??? А то гложет сомнение что может он не по той дороге вообще идет... Да как я понял, пользователи потом юзают функционал экселя, так что не выход... Ну если только так... Но и с Excel-ем все решаемо, как оказалось... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2010, 19:39 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
Shocker.ProAndrFИнтересно - а автору топика действительно Excel-евский файл нужен, а не Grid??? А то гложет сомнение что может он не по той дороге вообще идет... Да как я понял, пользователи потом юзают функционал экселя, так что не выход... Да, грид я уже пробовал, причем он стоил 800 у.е. Там нет многих вещей... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2010, 20:41 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
AndrFКстати, давно было, но вроде если эту xml-ку переименовать в xls и запустить, то Excel ее вполне нормально откроет...Прекрасно откроет и без переименования. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2010, 22:11 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
AntonariyAndrFКстати, давно было, но вроде если эту xml-ку переименовать в xls и запустить, то Excel ее вполне нормально откроет...Прекрасно откроет и без переименования. Но если переименовать, то Excel запустится по расширению - я об этом... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2010, 23:33 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
AndrFAntonariyAndrFКстати, давно было, но вроде если эту xml-ку переименовать в xls и запустить, то Excel ее вполне нормально откроет...Прекрасно откроет и без переименования. Но если переименовать, то Excel запустится по расширению - я об этом...Я об этом же. Виндовский шелл анализирует не только расширения, но и процессинговые инструкции xml-файлов, если находит <?mso-application progid="Excel.Sheet"?>, то соответственно его ассоциирует. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2010, 10:21 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
Потестировал скорость. Если убрать раскраску ячеек, то время сокращается с 5 мин до 4 мин 46 сек. Если убрать присваивание значений ячейкам, то до 4 мин 30 сек. Видимо, разбор строки занимает большую часть по времени. При этом, если сделать выход из процедуры довольно близко к ее началу, чтобы проверить, сколько занимает это по времени, то даже это делалось около 3 мин 40 сек. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2010, 21:59 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
motorwayВидимо, разбор строки занимает большую часть по времени. ..... Довольно странно, почему это так медленно даже это. Погодите-ка, я же вам давал код БЕЗ ворочанья больших массивов в памяти и вы даже вроде его тестировали. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2010, 23:18 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
Shocker.Pro, да, сейчас он есть, но это относится ко второй части кода. А первая вот: Код: plaintext 1. 2. 3. 4. Или я неправильно что-то сделал? У меня же там в начале процедуры это еще есть ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2010, 01:12 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
Если я правильно понимаю, "~~~END~~~" у вас встречается только один раз Нафига его командой Split обрабатывать, создавая еще один массив в памяти, совершенно бесполезный. Избавьтесь от этого. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2010, 01:18 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
впрочем... это находится не внутри цикла, конечно может не иметь решающего значния... Я вам предлагал еще на первой странице сделать замер времени, попробуйте, может на этот единичный Split и не так много времени уйдет... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2010, 01:19 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
motorwayДовольно странно, почему это так медленно даже это. Держите код работающий с тем файлом примера что вы прикладывали. Где-то секунда уходит на заполнение. Может создавать листы, если их несколько. Количество колонок - до Z (влом было предусматривать что их может быть больше, так как не в курсе нужно ли)... Код: 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. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2010, 04:26 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
Спасибо, жаль, что код довольно труден для понимания... Число листов, строк и колонок у меня может быть любое, в частности для той таблицы из 20000 ячеек колонок около 35. Но проблема еще и в быстром считывании данных при посылке на сервер - нужно считать значения и примечания для 20000 ячеек. Здесь Recordset может помочь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2010, 18:00 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
motorwayСпасибо, жаль, что код довольно труден для понимания... Число листов, строк и колонок у меня может быть любое, в частности для той таблицы из 20000 ячеек колонок около 35. Но проблема еще и в быстром считывании данных при посылке на сервер - нужно считать значения и примечания для 20000 ячеек. Здесь Recordset может помочь? Для примечаний, как я понимаю - нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2010, 19:29 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
motorwayНо проблема еще и в быстром считывании данных при посылке на сервер - нужно считать значения и примечания для 20000 ячеек. Можешь выложить исходные полные файлы? А то и потестить не с чем... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2010, 20:03 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
AntonariyAndrFЕму примечания нужны, а как их запихнуть в чистый XML мне не ведомо...Так ить "Сохранить как — Таблица XML"… Имеем результат: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. А можешь подсказать, какая у этого файла кодировка? То бишь сконвертить для него строку... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2010, 20:34 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
AndrF Можешь выложить исходные полные файлы? А то и потестить не с чем... Конкретно файл с макросами не могу, а потестировать можете примерно как я - заполняю таблицу примерно 1600 строк*13 колонок автозаполнением - можно одинаковые числа и примечания сделать. И нужно чтобы из этого формировалась строка вида Лист|B|2|1`Лист|C|2|1`Лист|D|2|1`... и т.п. Из примечаний тоже чтобы значения доставались в таком же виде ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2010, 20:52 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
AndrFА можешь подсказать, какая у этого файла кодировка? То бишь сконвертить для него строку...Генерировать можно win-1251, но эксель пересохраняет в utf-8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.04.2010, 23:23 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
Приложен пример с созданием и заполнением из кода xml-файла с примечаниями ячеек. Раскраску не делал, но оно тоже примитивно и на скорость существенно не повлияет... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2010, 00:20 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
Спасибо, тоже может пригодиться. Я потестил обновленные процедуры считывания данных и помещения их в строку (переменную) и парсинг строки и обновление таблицы. Сейчас уже получается так: получилось ускорить обновление таблицы, т.е. запись, а вот основное время занимает считывание - для такой таблицы (около 19000 ячеек) оно занимает 2 мин 30 сек примерно. Но вроде бы считывание данных обычно быстрее должно быть, чем запись, почему же так? Вот код для считывания данных и помещения их в строку для отправки на сервер: Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2010, 00:47 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
motorway, Попробуйте для эксперимента собирать данные не в текстовую строку, а выводить в файл на диске. Сравните время. Попробуйте для эксперимента не накапливать данные в переменной, а просто перезаписывать ее поверх (чтобы длина переменной не росла). Сравните время. У меня есть опыт - я формировал отчет (под VB6) примерно 3000-4000 строк и около 12-ти столбцов. В основном числовые данные и пара строковых. Пользователю предлагался выбор, сформировать его в памяти и последующая передача в буфер обмена для вставки в эксель, либо сразу отправлять в базу (прямо по мере формирования). Так вот, отправка в базу на сервер в сети, выполняется В РАЗЫ быстрее, чем сбор отчета в текстовую переменную. Видимо, тут играют роль принципы выделения памяти под постоянно растущую переменную. Если эксперименты дадут положительные результаты, можно будет подумать, как это обойти. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2010, 01:04 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
motorwayдля такой таблицы (около 19000 ячеек) оно занимает 2 мин 30 сек примерно. Прогнал свой примерчик на скорость со своим тестовым файлом - 3 листа 20x2000 =120000 ячеек с примечаниями заполняются ~3 минуты... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2010, 01:20 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
Shocker.Promotorway, Попробуйте для эксперимента собирать данные не в текстовую строку, а выводить в файл на диске. Сравните время. Попробуйте для эксперимента не накапливать данные в переменной, а просто перезаписывать ее поверх (чтобы длина переменной не росла). Сравните время. У меня есть опыт - я формировал отчет (под VB6) примерно 3000-4000 строк и около 12-ти столбцов. В основном числовые данные и пара строковых. Пользователю предлагался выбор, сформировать его в памяти и последующая передача в буфер обмена для вставки в эксель, либо сразу отправлять в базу (прямо по мере формирования). Так вот, отправка в базу на сервер в сети, выполняется В РАЗЫ быстрее, чем сбор отчета в текстовую переменную. Видимо, тут играют роль принципы выделения памяти под постоянно растущую переменную. Если эксперименты дадут положительные результаты, можно будет подумать, как это обойти. Я об этом недавно подумал. Только как сделать, чтобы длина не росла - ведь на каждой итерации длина общая увеличивается. Или вы имеете в виду добавлять в конец файла (append)? Насчет памяти тоже были мысли, что это из-за этого. Нужно бы успеть всё это проверить побыстрее, а то при сохранении на винчестер в последнее время стали раздаваться звуки, похожие на метеоритный дождь (или тормоза). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2010, 01:27 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
AndrFmotorwayдля такой таблицы (около 19000 ячеек) оно занимает 2 мин 30 сек примерно. Прогнал свой примерчик на скорость со своим тестовым файлом - 3 листа 20x2000 =120000 ячеек с примечаниями заполняются ~3 минуты... А какой у вас комп? У меня в таблице в каждой ячейке были небольшие числа и у каждой по примечанию не длинному. Всего 18967 ячеек ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2010, 01:29 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
Кстати, можно ли как-то в VBA распараллелить обработку? Если у компьютера 2 ядра, это должно помочь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2010, 01:30 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
motorwayЯ об этом недавно подумал. Только как сделать, чтобы длина не росла - ведь на каждой итерации длина общая увеличивается. Или вы имеете в виду добавлять в конец файла (append)? Я имел ввиду два разных теста. Вывод в файл на диске - да, просто не закрывая файл принтить туда данные по мере поступления. Потом пришла в голову мысль - просто замените Код: plaintext 1. Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2010, 01:33 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
motorwayКстати, можно ли как-то в VBA распараллелить обработку? Если у компьютера 2 ядра, это должно помочь На одной копии экселя наверное не получится. То есть надо, видимо, запускать второй эксель, раздать двум задачам данные напополам и запустить асинхронно. Только гемора по-моему с этим будет гораздо больше, чем выгоды. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2010, 01:35 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
motorwayА какой у вас комп? У меня в таблице в каждой ячейке были небольшие числа и у каждой по примечанию не длинному. Всего 18967 ячеек Athlon X2 5600+, 4 Gb, Windows-7 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2010, 02:18 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
motorwayА какой у вас комп? У меня в таблице в каждой ячейке были небольшие числа и у каждой по примечанию не длинному. Всего 18967 ячеек Athlon X2 5600+, 4 Gb, Windows-7 В приложенном файле в модуле modTest вначале запустить процедуру CreateTestFile - сформируется тестовый файл с данными. И только потом запускать собственно программу.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2010, 02:24 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
motorwayНо вроде бы считывание данных обычно быстрее должно быть, чем запись, почему же так? Потому что считывание не виновато, виноват известный VB-баг, тормозная конкатенации строк. Возьмите исходник класса StringBuilder, который есть в примере AndrF , скопируйте в эксель-класс и используйте вместо values = values + Скорость увеличится на пару порядков. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2010, 11:28 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
Antonariyвиноват известный VB-баг, тормозная конкатенации строк. Я, в-общем, о том же... на личном опыте получается... А что за известный баг, я чего-то о нем ничего не слышал? Или ты его уже полностью описал? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2010, 12:12 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
Описал) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2010, 12:57 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
Хотелось бы, конечно, сделать на чистом VBA, т.к. в том коде я не очень разбираюсь... И как дописывать в файл строку? С файлами из VBA тоже редко работал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2010, 15:16 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2010, 15:44 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
motorwayИ как дописывать в файл строку? С файлами из VBA тоже редко работал. Код: plaintext 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2010, 15:51 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
motorwayХотелось бы, конечно, сделать на чистом VBA, т.к. в том коде я не очень разбираюсь... И как дописывать в файл строку? С файлами из VBA тоже редко работал. Это не совершенно баг, а просто для каждого объединения строк VB приходится перераспределять память, а чем больше строки участвующие в объединении тем дольше это происходит. Это совершенно не зависит от языка разработки - везде так. Потому для ускорения объединения вначале резервируют место под большую строку и просто вставляют туда добавляемые строчки. Примерно так и работает StringBuilder - в NET так же есть аналогичный класс.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2010, 17:02 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
AndrFЭто не совершенно баг, а просто для каждого объединения строк VB приходится перераспределять память, а чем больше строки участвующие в объединении тем дольше это происходит. Это совершенно не зависит от языка разработки - везде так. Потому для ускорения объединения вначале резервируют место под большую строку и просто вставляют туда добавляемые строчки. Примерно так и работает StringBuilder - в NET так же есть аналогичный класс.... Я так думаю, чтоб если бы ядро не пыталось каждый выделить непрерывный кусок памяти под это дело, а использовало разумную фрагментацию, то работало бы это быстрее. Так что относительно - все-таки баг. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.04.2010, 17:06 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#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 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
Там примерно того же порядка объем, в данном случае около 120 кБ. Насчет Split и InStr я понял. Но главные тормоза в них разве? Вроде бы до этого пришли к выводу, что в обращении к ячейкам. Можно попробовать переделать и на InStr. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2010, 23:23 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
AntonariyAndrFА попробовать: Я говорил про самодельный StringBuilder (которые есть в вашем примере, в моем под именем clsConcat ), а не System.Text.StringBuilder. Сколько повторять? Ну я уже тоже говорил, что самодельные классы вполне можно доработать, чтобы строки буфера добавлялись в коллекцию заданными блоками и объединялись в единую строку только при запросе результата. Тогда не будет перераспределения большого объема памяти - думаю так и работает NET-овский StringBuilder. Тогда и разница со StringBuildera-ми VB6 и NET версий сведется к минимуму. Ну а как простейший выход (чтобы ничего не переделывать, ибо это уже просто влом при наличии готового NET) - выделять буфер в StringBuilder-e большими порциями - скажем по нескольку мегабайт... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2010, 23:45 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
Жаль, что с InStr у меня не получается ловко управляться. В основном я делал строку такого вида, чтобы её было легко резать Split'ом ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2010, 00:10 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
В общем, если у кого-нибудь есть желание переписать за большое спасибо мой код с использованием InStr, я буду рад :) Сама строка имеет вид Лист1~B2|value`C2|value`...`:::Лист2~B2|value`C2|value`:::Лист3~B2|value`C2|value` Нужно аналогичным образом выудить значения соответствующие и присвоить их листу, например для ячейки B2 на листе 1 будет значение value. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2010, 00:30 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
motorwayВ общем, если у кого-нибудь есть желание переписать за большое спасибо мой код с использованием InStr, я буду рад :) Этот код был предложен мной еще на первой странице этого топика ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2010, 00:39 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
Здесь немного отличается формат строки, это уже строка другого вида. Сначала идут названия листов, потом знак тильды, потом все ячейки, относящиеся к этому листу, потом разделитель ":::", потом следующий лист. Тут надо по-другому немного обрабатывать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2010, 00:42 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
motorwayЗдесь немного отличается формат строки, это уже строка другого вида. Сначала идут названия листов, потом знак тильды, потом все ячейки, относящиеся к этому листу, потом разделитель ":::", потом следующий лист. Тут надо по-другому немного обрабатывать. Ну так доработайте общий принцип же ясен ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2010, 00:45 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
Даже в этом коде я как-то с трудом разбираюсь. Общий принцип примерно ясен, но доработка для меня будет тяжела. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2010, 00:47 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
motorwayДаже в этом коде я как-то с трудом разбираюсь. Общий принцип примерно ясен, но доработка для меня будет тяжела. Я хотел-бы услышать название продукта и фирмы производителя, потому что motorwayПользоваться системой будут, если получится, не обычные "одиночные пользователи", а люди из фирмы с большими запросами. Так что если такая ситуация будет на первом испытании системы, дальше они даже разговаривать не будут. :) у меня фирма с большими запросами и я хоть буду знать от чего нужно отбрыкиваться всеми способами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2010, 08:50 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
Игорь ГорбоносЯ хотел-бы услышать название продукта и фирмы производителя, ....буду знать от чего нужно отбрыкиваться всеми способами. Зачем? "А я милаавааа.... узнаю да папахоооод-ке...." (с) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2010, 09:09 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
> Автор: Shocker.Pro > "А я милаавааа.... узнаю да папахоооод-ке...." (с) Но не все так хорошо узнали "милаавааа...", что-бы узнавать по походке. Кому-то глядишь и пригодится :D Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2010, 10:26 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
motorwayДаже в этом коде я как-то с трудом разбираюсь. Общий принцип примерно ясен, но доработка для меня будет тяжела. Что поделаешь... С чем было интересно остальные для себя уже разобрались - дальше уже стало просто неинтересно... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2010, 10:32 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
> Автор: AndrF > С чем было интересно остальные для себя уже разобрались - дальше уже стало просто неинтересно... +1000 Браво! можно я буду цитировать эту фразу? Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2010, 10:43 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
Игорь Горбонос > С чем было интересно остальные для себя уже разобрались - дальше уже стало просто неинтересно... +1000 Браво! можно я буду цитировать эту фразу? Можно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2010, 15:58 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
Игорь Горбонос Я хотел-бы услышать название продукта и фирмы производителя В данном случае это не важно, у меня возникла конкретная проблема, когда много ячеек в таблице. А сам продукт всех устроит. То, что мне сложно исправить тот код, объясняется плохим состоянием здоровья - делаю эту программу из последних сил с постоянной тяжестью в голове. Так что тут не очень смешно всё. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2010, 16:54 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
> Автор: motorway > То, что мне сложно исправить тот код, объясняется плохим состоянием здоровья - делаю эту программу из последних > сил с постоянной тяжестью в голове. Так что тут не очень смешно всё. Я совершенно не смеялся спрашивая о названии, потому, что незнание основ объясняется их не знанием, а не плохим здоровьем. Хотя плохое самочувствие тоже накладывает отпечаток, здесь могу только посочувствовать и пожелать скорейшего выздоровления. Но использовать продукт, который разрабатывает программист имеющий очень поверхносные представления о возможностях языка я не хочу. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2010, 17:03 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
Основы VBA я в целом знаю, в данном случае просто на переделку алгоритма с использованием другой функции мне потребуется время, т.к. нужно вникнуть в суть предложенной оптимизации. Ну и часто приходится работать поздно вечером, производительность тогда маленькая. С точки зрения пользователя я думаю, что более важен функционал (которого, в частности, нет в других продуктах), а при использовании продукта, если все работает нормально, пользователь даже не подозревает, хороший или не очень программист. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2010, 17:11 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
Ну и на самом деле, если бы вы увидели весь функционал, то вы бы не стали отбрыкиваться даже при минусах в интерфейсе и скорости... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2010, 17:14 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
Кстати, обнаружил еще одну возможную проблему. Может ли в принципе тормозить посылка данных на сервер (localhost)? Делаю с помощью WinHttpRequest.Send, посылается где-то 200 кб. Сделал вывод сообщения до этой команды и после, и почему-то 2 минуты это занимает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2010, 22:11 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
И вот еще подскажите, как организовать при изменении ячеек их добавление в некоторый массив (Range), откуда дальше будет идти считывание? Сейчас у меня цикл по всему листу, а я хочу только по изменившимся ячейкам. При этом дубликаты должны удаляться, если ячейку изменяли несколько раз. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2010, 22:35 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
motorwayИ вот еще подскажите, как организовать при изменении ячеек их добавление в некоторый массив (Range), откуда дальше будет идти считывание? Сейчас у меня цикл по всему листу, а я хочу только по изменившимся ячейкам. При этом дубликаты должны удаляться, если ячейку изменяли несколько раз. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2010, 09:55 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
motorwayКстати, обнаружил еще одну возможную проблему. Может ли в принципе тормозить посылка данных на сервер (localhost)? Делаю с помощью WinHttpRequest.Send, посылается где-то 200 кб. Сделал вывод сообщения до этой команды и после, и почему-то 2 минуты это занимает.Раз у вас тормозит, значит в принципе может. Но вообще не должно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2010, 09:56 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Что-то не очень пойму, как работает ваш код. Я попробовал его вставить, потом изменяю ячейки, но Msgbox colChanged.Count не работает (пробую отобразить число элементов). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2010, 21:21 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
motorway, вы не забыли про Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2010, 21:29 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
Да, этой строки у меня не было, но все равно не работает так как нужно. Теперь все время пишет, что 1 элемент в коллекции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2010, 21:48 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
Мне просто нужно накапливать в массиве все ячейки, которые изменялись ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2010, 21:50 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
motorwayМне просто нужно накапливать в массиве все ячейки, которые изменялись Собственно, так этот код и должен работать. Попробуйте поставить там точку останова и пошагово посмотреть, что происходит при изменении РАЗНЫХ ячеек. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2010, 21:52 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
motorway, у меня так заработало (мессидж потом убери): Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2010, 23:06 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1) При заливке данных в коллекцию попадут все ячейки и смысл этой процедуры полностью теряется. С таким же успехом можно перебрать не коллекцию, а весь лист. 2) Заливка будет адски тормозить. Jah loves you. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2010, 12:40 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
Кстати, это условие: Код: plaintext 1. 2. 3. 4. Jah loves you. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2010, 12:42 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
Заметил одну вещь - обработка примечаний ускоряется, если не использовать массив SpecialCells (только ячейки с примечаниями), а просто написать 2-ной цикл по ячейкам. А вот насчет того, как лучше сделать - цикл со счётчиком или For Each - как быстрее? Хотя бы в теории (для данного случая). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.05.2010, 00:07 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
Antonariy, так что в итоге? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2010, 00:23 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
Вот еще вопросик: может ли при выключенном обновлении экрана меняться курсор мышки с часов на просто курсор и обратно? Или всё время должен быть неподвижным - часы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2010, 22:02 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
Получилось ускорить некоторые проблемные функции, где нужно было обновлять содержимое каждой ячейки. Сделал сначала запись в файл нужных данных, а потом вставку из него на лист. В таком варианте это занимает около 2 сек. А обновление примечаний, кстати, работает достаточно быстро само по себе. Если сделать таблицу 20 на 1000 с автозаполнением, и потом менять цифры, то примечания обновляются быстро. А вот Cells(i,j).Value - медленно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2010, 23:06 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
motorway, Позвольте полюбобытствовать, вы все еще готовите презентацию для заказчика?... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2010, 23:08 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
Shocker.Pro, да, как ни странно :) Характеристики быстродействия улучшились, так что поводов пролететь стало меньше. А посоветуйте, кстати, еще на одной вещи, если знаете: есть массив строк, в котором надо заменять знаки доллара на "пустое место", т.е. убирать их. Как более выгодно - заменять их в цикле для каждого такого элемента, или применить эту замену уже ко всей большой строке (около 200-400 кб)? Что-то мне подсказывает, что второй вариант лучше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2010, 17:25 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
motorwayЧто-то мне подсказывает, что второй вариант лучше. Мне тоже подсказывает, однако вы задаете уже третий вопрос, который быстрее самому проверить, чем ждать ответа на форуме. Ибо нам тоже надо пробовать, чтобы дать точный ответ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2010, 17:29 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
Проверить можно, но я хотел получить именно аргументированные советы, почему лучше так или так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2010, 17:31 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
Скорее всего, в 1-м случае будет много накладных расходов на вызов функции много раз, хоть и объем данных будет меньше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2010, 17:32 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
motorwayПроверить можно, но я хотел получить именно аргументированные советы, почему лучше так или так. По идее встроенная функция отработает быстрее, чем ваш собственный цикл, но все же лучше проверить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2010, 17:34 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
motorwayПривет всем. Есть файл Эксела с рабочей областью около 20000 ячеек, с помощью макросов на VBA обеспечивается передача данных на сервер вычислителю и обработка поступивших от него данных. Данные посылаются и принимаются в виде строки. Для данного файла это около 200 кБ. Основная проблема во времени. Для 7000 ячеек, например, формирование строки занимает около 10 секунд, а обработка поступивших данных и их отображение в таблице - около 1 мин 20 сек. Для такого размера таблицы это много. А для 20000 ячеек вообще чуть ли не 20 минут все это делается. Конечно, можно передавать только изменившиеся по сравнению с прошлым вариантом ячейки, но если их будет много, то все равно нужно ускорить это. Сейчас все это делается в цикле, каждой ячейке присваивается полученное значение. Здесь в принципе тоже можно сократить объем данных, если обновлять только изменившиеся ячейки. Но даже так может получаться общее время около 1 мин. Нет ли способа принципиально это ускорить? Может быть, с помощью базы данных - генерировать файл БД в формате .mdb, а затем макросом вставлять данные из неё. Сам код функции разбора полученной с сервера строки (лишние маловажные части убраны): Код: 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. Что-то можно с этой проблемой сделать или нет (очень долгая обработка)? здесь явно не хватает (конечно, если у вас есть формулы в листах) Application.Calculation = xlCalculationManual Application.Calculation = xlCalculationAutomatic И форматирование, и особенно шрифт значительно затормаживает работу. Попробуйте прогоните ваш код без вставки в лист эксель, только обработка, вы увидите реальное время к которому вы можете стремится по загрузке данных данным способом. А вообще если данных много, то их нужно сначала поместить в массив, а затем вставлять, используя метод Range. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2010, 17:53 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
ak787, выключения пересчета формул присутствует в другом месте. Шрифт я пока убрал, так как это достало меня - этот код (с учетом посылки данных на сервер и обработки там) быстрее 15 секунд для большого числа ячеек не хотел работать. В случае обновления малой части таблицы всё получалось за 5 где-то. Т.е. вся процедура работала за 5 секунд в лучшем случае. Сейчас я сделал вставку массива целиком, и 5 секунд - стабильное время даже для случая, когда надо всю таблицу обновлять. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2010, 18:00 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
То есть, посылка на сервер занимает 3 секунды, обработка там 1-2, а этот код парсинга и вставки срабатывает где-то за 1 секунду. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2010, 18:02 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
motorway, имхо для базы данных думаю это хорошее время, если конечно случай типичный ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2010, 18:22 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
Немного узнал про еще один способ решения проблемы со скоростью и др. - использовать для макросов C#. Только мне непонятно, как можно писать макросы на C#, или это уже не макросы, а возможно только использование dll / создание exe файла для работы с Экселом? Якобы на C# / VB.NET можно сделать многое, что и на VBA, но там будет быстрее. Если у меня сейчас есть макросы на VBA, это вообще реально переделать под .NET, чтобы все работало также? Я вообще не понимаю, как это может работать также, если VBA встроен в Эксел, а с .NET надо работать с помощью Visual Studio. Ведь, наверно, весь доступ к объектам Эксела будет таким же? Или там действительно какие-то новые возможности? Если конкретнее, я тут писал всякие примеры кода на VBA. Сделать то же самое на .NET, чтобы работало в Экселе - это реально или из разряда фантастики и смысла не имеет (т.е., посоветовали мне неправильно)? Как это туда встроить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2010, 23:10 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
1) Можно из .NET установить связь с экселем через COM и оперировать его объектной моделью. Но это очень тормознутый способ. 2) Можно писать отдельные самодостаточные модули на .NET (функции по обработке данных) и вызывать их из VBA. Ну что-то типа dll сделать. Работу с самими объектами экселя эти способы не ускорят. Только если какие-то функции анализа данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2010, 23:36 |
|
||
|
Долгая обработка текстовых данных в Экселе
|
|||
|---|---|---|---|
|
#18+
С этим ясно более-менее, спасибо. Также насчет проблемы представления данных (я писал о форматах в другой теме) - якобы с помощью VS можно обойти трудности представления текста вида [min,max]. В частности, есть такой формат, как binary decimal, если не ошибаюсь. Вы про него знаете что-нибудь в .NET? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2010, 00:36 |
|
||
|
|

start [/forum/topic.php?all=1&fid=60&tid=2159730]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
44ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
122ms |
get tp. blocked users: |
1ms |
| others: | 195ms |
| total: | 397ms |

| 0 / 0 |
