![]() |
![]() |
|
Самый быстрый способ записи строк в текстовый файл | ☑ | ||
---|---|---|---|---|
0
1Снечег
28.07.07
✎
18:20
|
В добавление к теме Как грамотно создавать файл лога?
т.к. скорость все-таки стала важна, спрашиваю сабж. другими словами, у меня есть процедура, которая дописывает в файл лога строки. делает она это след образом: Процедура ЗаписатьВФайлЛога(ТекстДляЗаписи) Попытка ФайлЛога.Открыть(КаталогИБ()+"ExtForms\log_xml.txt"); ФайлЛога.ДобавитьСтроку(ТекстДляЗаписи); ФайлЛога.Записать(КаталогИБ()+"ExtForms\log_xml.txt"); Исключение КонецПопытки; КонецПроцедуры // ЗаписатьВФайлЛога() попытку убирать не хочется. может с помощью каких компонент/хитростей/объектов можно сделать быстрее? |
|||
1
France
28.07.07
✎
18:26
|
не нужно делать запись каждой строки лога - записывай пул сообщений..
изза записи и будут тормоза.. |
|||
2
Скользящий
28.07.07
✎
18:30
|
загонять все, что нужно записать в СЗ или ТЗ, и записывать один раз. Как и сказано постом выше.
|
|||
3
romix
модератор
28.07.07
✎
18:31
|
FileSystemObject работает с файлом построчно, и поэтому не тормозит.
Книга знаний: Пример чтения и записи текстовых файлов (Scripting.FileSystemObject) Если нужен именно XML, то тут готовая наработка: Книга знаний: Чтение и запись текстовых файлов XML средствами 1С:Предприятие 7.7 |
|||
4
France
28.07.07
✎
18:32
|
+1 и, что за дурная манера каждый раз открывать файл?.... открой 1 раз и пользуй до конца сеанса..
|
|||
5
Скользящий
28.07.07
✎
18:34
|
А вообще, замер производительности в отладчике - рулит. Если вдумчиво посмотреть, где наибольшие тормоза, то и придумать, как ускроить процесс становится проще.
|
|||
6
1Снечег
28.07.07
✎
18:53
|
(4) это ж лог все-таки=))
|
|||
7
1Снечег
28.07.07
✎
18:55
|
(3)
что менять в "fso.CreateTextFile(ИмяФайла, -1, 0)" чтобы файл дописывался? |
|||
8
France
28.07.07
✎
19:02
|
(6) кстати, конструкция в (0) не запишет в логи все действия..
попробуй догадатся, почему)) |
|||
9
1Снечег
28.07.07
✎
19:04
|
(8) давай под конец в субботы в шарады играть не будет, а? =)
просто скажи что хотел.. |
|||
10
1Снечег
28.07.07
✎
19:05
|
+(7)
т.е. насколько я понимаю, в примере файл заново создается, а мне нужно именно чтобы открывался и дописывался. |
|||
11
France
28.07.07
✎
19:07
|
(9) в случае многопользовательского доступа - при попытке открыть файл в тот момент, когда другой в него пишет - вывалишся с исключением, и все.. запись пропала..
|
|||
12
1Снечег
28.07.07
✎
19:14
|
(11)нуу..
это слишком)) |
|||
13
France
28.07.07
✎
19:16
|
что "это"?
|
|||
14
1Снечег
28.07.07
✎
19:24
|
фишка в том что этой обработкой будет пользоваться только один человек одновременно. так как файл, который она читает после - удаляется автоматом=)
|
|||
15
1Снечег
28.07.07
✎
19:24
|
ROMIX, ответь как дописывать файл в том примере, а не создавать его заново!
|
|||
16
France
28.07.07
✎
19:26
|
(14) ну и нафиг тогда нужно постоянно открывать и закрывать файл?... по длительности это самые длинные операции...
|
|||
17
1Снечег
28.07.07
✎
19:32
|
(16) я же говорю, это лог. инфа загружается большим объемом (мегабайты текста в xml), плюс эта инфа - элементы справочников и документы. так что отдельно записывать каждую строчку - оч желательно
|
|||
18
France
28.07.07
✎
19:39
|
(17) но, каждый раз искать и открывать то не нужно)))
делай только запись)) |
|||
19
1Снечег
28.07.07
✎
19:40
|
(18) аа.. вот за это спасибо))
|
|||
20
1Снечег
28.07.07
✎
20:38
|
пилять!
ШЕДЕВР! исправил на СкриптФайлСистем и время выполнения стало с примерно 12 минут на тестовых 400 кб всего лишь 4 секунды! romix, ты мой герой=) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |