Имя: Пароль:
1C
 
Самый быстрый способ записи строк в текстовый файл
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, ты мой герой=)
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший