Автор |
Тема: printstr BIGSTRING to file NF (Прочитано 4673 раз) |
|
Boris, Kiev.
Адепт ФБП с 1996г.
Просмотреть Профиль | E-мэйл
Сообщений: 875
|
Всё чаще приходится экспортировать для разных служб предприятий всякого рода отчётов. При объеме свыше 10тыс. строк время на экспорт отчета в требуемых форматах(html,xml) более 2,3 минут на машинах с raid0-массивами, про менее производительные не говорю. Вариаты вывода ^^ST>>file NF или printstr ST to file NF мало чем отличаются по производительности. Кто знает на сегодня методы ускорения этих операторов? Если бы родить безразмерную переменную BIGSTRING, наполнить её на финише написания формы всеми строками требуемого отчета и сказать: printstr BIGSTRING to file NF Интересно на сколько бы печать прошла быстрее.
|
|
Зарегистрирован |
|
|
|
Jhon
Гость
E-мэйл
|
Вывод в файл столько времени не занимает. Вероятно, задержка связана с подготовкой данных для вывода. Простая форма, выводящая 20000 длинных строк, выполняется у нас на машине 5 сек.
|
|
Зарегистрирован |
|
|
|
Denis, Dnepropetrovsk
Я люблю этот Форум!
Просмотреть Профиль | E-мэйл
Сообщений: 129
|
|
Re: printstr BIGSTRING to file NF
« Ответить #2 В: 21.05.08 в 14:23:46 » |
Цитировать | Править
|
У меня тоже была такая проблема Возможно у Вас стоит антивирус, проверяющий открытие закрытие файла.... Попробуйте отключить проверку или выводите отчет в файл с безобидным расширением )). Например я у себя вывожу отчет в файл *.req , а после окончания записи переименовываю его в нужный тип *.xml *.html и т.п.
|
« Изменён в : 21.05.08 в 14:26:09 пользователем: Denis, Dnepropetrovsk » |
Зарегистрирован |
|
|
|
Boris, Kiev.
Адепт ФБП с 1996г.
Просмотреть Профиль | E-мэйл
Сообщений: 875
|
|
Re: printstr BIGSTRING to file NF
« Ответить #3 В: 21.05.08 в 17:35:34 » |
Цитировать | Править
|
on 21.05.08 в 12:25:33, Jhon wrote:Вывод в файл столько времени не занимает. Вероятно, задержка связана с подготовкой данных для вывода. Простая форма, выводящая 20000 длинных строк, выполняется у нас на машине 5 сек. |
| ФБП-сервер имеет средство контроля за расходом времени по строкам формы, так что читайте руководство. Внимательнее читайте вопрос, речь идет о создании файла в требуемом формате(html) Например, анализ расчетного счёта за 4 месяца занимает почти 40Мб, если спросите: "кому - это надо?", вопрос не ко мне. Excel такой отчёт загружает на той же машине более 3 минут.
|
|
Зарегистрирован |
|
|
|
Boris, Kiev.
Адепт ФБП с 1996г.
Просмотреть Профиль | E-мэйл
Сообщений: 875
|
|
Re: printstr BIGSTRING to file NF
« Ответить #4 В: 21.05.08 в 17:42:48 » |
Цитировать | Править
|
on 21.05.08 в 14:23:46, Denis, Dnepropetrovsk wrote:У меня тоже была такая проблема Возможно у Вас стоит антивирус, проверяющий открытие закрытие файла.... Попробуйте отключить проверку или выводите отчет в файл с безобидным расширением )). Например я у себя вывожу отчет в файл *.req , а после окончания записи переименовываю его в нужный тип *.xml *.html и т.п. |
| Да, каждый борется по своему. Уточню, на машине антивируса нет. На машинах где стоят антивирусные программы требую у администраторов, чтобы все ФБП-каталоги числились в исключениях. Неужели никто у нас никогда не мечтал о такой перменной(BIGSTRING). Только представьте операцию поиска....
|
« Изменён в : 22.05.08 в 06:29:11 пользователем: Boris, Kiev. » |
Зарегистрирован |
|
|
|
Alexander_Kiev
Просмотреть Профиль | E-мэйл
Сообщений: 661
|
|
Re: printstr BIGSTRING to file NF
« Ответить #5 В: 21.05.08 в 23:37:38 » |
Цитировать | Править
|
on 21.05.08 в 10:15:48, Boris, Kiev. wrote:Если бы родить безразмерную переменную BIGSTRING, наполнить её на финише написания формы всеми строками требуемого отчета и сказать: printstr BIGSTRING to file NF Интересно на сколько бы печать прошла быстрее. |
| Поможет, в случае ежли каждый оператор записи в файл открывает и закрывает его, чего скорей всего нет.
|
|
Зарегистрирован |
С уважением, Александр.
|
|
|
Boris, Kiev.
Адепт ФБП с 1996г.
Просмотреть Профиль | E-мэйл
Сообщений: 875
|
|
Re: printstr BIGSTRING to file NF
« Ответить #6 В: 22.05.08 в 06:43:34 » |
Цитировать | Править
|
on 21.05.08 в 23:37:38, Alexander_Kiev wrote: Поможет, в случае ежли каждый оператор записи в файл открывает и закрывает его, чего скорей всего нет. |
| Друг мой, а это что такое: >> file FW print '<meta http-equiv="Content-Type" content="text/html; charset=CP866">' > file (ending) И так каждую строчку...
|
|
Зарегистрирован |
|
|
|
Arkady
Administrator
Просмотреть Профиль | WWW | E-мэйл
Сообщений: 484
|
|
Re: printstr BIGSTRING to file NF
« Ответить #7 В: 22.05.08 в 07:52:01 » |
Цитировать | Править
|
on 21.05.08 в 17:42:48, Boris, Kiev. wrote: На машинах где стоят антивирусные программы требую у администраторов, чтобы все ФБП-каталоги числились в исключениях. |
| Неизвестно как те исключения обрабатываются. Скорее всего, антивирус получает от системы извещение о каждом открытии файла и решает, принадлежит ли каталог к списку исключенных. A это тоже заметная задержка. По поводу скорости. Я не могу воспроизвести такую медленную запись. Пишу 10 000 строк по 75 байт за 3с и 100 000 таких же за 20с. Это на ноутбуке Celeron M 1.4 Ггц 512Мб XP На настольных машинах примерно то же получается. Но тут есть нюанс! 100 000 строк за 20с - это при добавлении к файлу C:\test.txt. С файлом C:\test\test\test\test\test\test\test.txt получим 35с, а с 12-ю уровнями вложенности будет уже 50с. P.S. По поводу "BIGSTRING". Я могу ввести новый оператор для вывода массива в файл - с одним открытием и закрытием файла. То есть надо будет сначала присвоить элементам массива строки и затем вызвать этот printarray ... to file ... .
|
|
Зарегистрирован |
|
|
|
Denis, Dnepropetrovsk
Я люблю этот Форум!
Просмотреть Профиль | E-мэйл
Сообщений: 129
|
|
Re: printstr BIGSTRING to file NF
« Ответить #8 В: 22.05.08 в 08:51:31 » |
Цитировать | Править
|
on 22.05.08 в 07:52:01, Arkady wrote: P.S. По поводу "BIGSTRING". Я могу ввести новый оператор для вывода массива в файл - с одним открытием и закрытием файла. То есть надо будет сначала присвоить элементам массива строки и затем вызвать этот printarray ... to file ... . |
| Это было бы неплохо, скорее всего так сервер и формирует ответ на запрос . Уж очень быстро формируется отчетная форма по сравнению с построчным выводом в файл . К тому же при плохой сети (у нас одно время свич глючил ) при выводе в файл на сетевой папке (расположенной на другом компе) некоторые строчки пропадают . Думаю printarray решит такую проблему.
|
|
Зарегистрирован |
|
|
|
Boris, Kiev.
Адепт ФБП с 1996г.
Просмотреть Профиль | E-мэйл
Сообщений: 875
|
|
Re: printstr BIGSTRING to file NF
« Ответить #9 В: 22.05.08 в 08:58:12 » |
Цитировать | Править
|
on 22.05.08 в 07:52:01, Arkady wrote: Неизвестно как те исключения обрабатываются. Скорее всего, антивирус получает от системы извещение о каждом открытии файла и решает, принадлежит ли каталог к списку исключенных. A это тоже заметная задержка. По поводу скорости. Я не могу воспроизвести такую медленную запись. Пишу 10 000 строк по 75 байт за 3с и 100 000 таких же за 20с. Это на ноутбуке Celeron M 1.4 Ггц 512Мб XP На настольных машинах примерно то же получается. Но тут есть нюанс! 100 000 строк за 20с - это при добавлении к файлу C:\test.txt. С файлом C:\test\test\test\test\test\test\test.txt получим 35с, а с 12-ю уровнями вложенности будет уже 50с. P.S. По поводу "BIGSTRING". Я могу ввести новый оператор для вывода массива в файл - с одним открытием и закрытием файла. То есть надо будет сначала присвоить элементам массива строки и затем вызвать этот printarray ... to file ... . |
| Спасибо, будем очень ждать printarray. Если не затруднит о невозможности открытия в нашем языке большой, а ещё лучше безразмерной переменной. Про нюанс. Это явление носит общий характер для Windows систем или как? Насчёт антивирусов, надо полагать что как-бы не крутили с расширениями и исключениями, результат один - та же задержка.
|
|
Зарегистрирован |
|
|
|
Arkady
Administrator
Просмотреть Профиль | WWW | E-мэйл
Сообщений: 484
|
|
Re: printstr BIGSTRING to file NF
« Ответить #10 В: 22.05.08 в 10:41:08 » |
Цитировать | Править
|
on 22.05.08 в 08:58:12, Boris, Kiev. wrote: ... Если не затруднит о невозможности открытия в нашем языке большой, а ещё лучше безразмерной переменной. Про нюанс. Это явление носит общий характер для Windows систем или как? |
| А разве массивы не выполняют роль таких переменных? Ведь легко опеределить собственные функции и подпрограммы, рассматривающие массив строк как единoe целое и скрывающие детали устройства. Что касается зависимости времени открытия файла от уровня вложенности его имени, то это легко объяснить: каждый уровень - это прыжок от таблицы к таблице. Но пока пробовал только в XP. Вообще-то они могли бы там для таких случаев и кэш какой-нибудь организовать, чтобы ускорить повторные открытия.
|
|
Зарегистрирован |
|
|
|
Alexander_Kiev
Просмотреть Профиль | E-мэйл
Сообщений: 661
|
|
Re: printstr BIGSTRING to file NF
« Ответить #11 В: 22.05.08 в 12:54:33 » |
Цитировать | Править
|
Зная как в принципе устроены "безразмерные" строки, вчерась хотел предложить поиграться с массивом, но потом вовремя одумался, а вдруг там каждый раз открывается и закрывается файл. А оператор вывода массива блоков символов в файл - самое оно.
|
« Изменён в : 22.05.08 в 12:56:08 пользователем: Alexander_Kiev » |
Зарегистрирован |
С уважением, Александр.
|
|
|
Boris, Kiev.
Адепт ФБП с 1996г.
Просмотреть Профиль | E-мэйл
Сообщений: 875
|
|
Re: printstr BIGSTRING to file NF
« Ответить #12 В: 22.05.08 в 13:58:33 » |
Цитировать | Править
|
on 22.05.08 в 10:41:08, Arkady wrote: А разве массивы не выполняют роль таких переменных? Ведь легко опеределить собственные функции и подпрограммы, рассматривающие массив строк как единoe целое и скрывающие детали устройства. |
| Если легко, то может быть несложно сравниться по скорости работы с нашим мостом FWP_WORD. Задача простая, модифицировать текстовый файл с ограниченной длиной строк с правилом перехода на следующую строку, который содержит метки. Короткие метки должны быть заменены другими контекстами, которые также могут быть очень большими.
|
« Изменён в : 22.05.08 в 22:54:37 пользователем: Boris, Kiev. » |
Зарегистрирован |
|
|
|
Boris, Kiev.
Адепт ФБП с 1996г.
Просмотреть Профиль | E-мэйл
Сообщений: 875
|
|
Re: printstr BIGSTRING to file NF
« Ответить #13 В: 23.05.08 в 10:24:27 » |
Цитировать | Править
|
on 22.05.08 в 07:52:01, Arkady wrote: .. P.S. По поводу "BIGSTRING". Я могу ввести новый оператор для вывода массива в файл - с одним открытием и закрытием файла. То есть надо будет сначала присвоить элементам массива строки и затем вызвать этот printarray ... to file ... . |
| Представил объём работы после ввода printarray. Не мало. Ведь у нас есть: \>file NF для инициализации, может быть проще ввести типа \\>file NF для закрытия. а все: ^^^ST>>file NF printstr ST to file NF почистить от открытия-закрытия В случае, если в форме явно не прописано: \\>file NF ,то закрыть принудительно по завершению формы. Единственное, чего помню из профисоветов, так это постараться не держать большое кол-во файлов открытыми, но как правило форма будет держать открытыми совсем небольшое кол-во файлов, зато сколько времени у нас сэкономится.
|
|
Зарегистрирован |
|
|
|
Alexander_Kiev
Просмотреть Профиль | E-мэйл
Сообщений: 661
|
|
Re: printstr BIGSTRING to file NF
« Ответить #14 В: 23.05.08 в 11:14:16 » |
Цитировать | Править
|
on 23.05.08 в 10:24:27, Boris, Kiev. wrote: В случае, если в форме явно не прописано: \\>file NF ,то закрыть принудительно по завершению формы. |
| А как в runtime узнать какие файлы открывались и есть ли что закрывать? На счет общего кол-ва открытых файлов не беспокойся. 1цэ их сотнями держит в таком состоянии.
|
« Изменён в : 23.05.08 в 11:35:05 пользователем: Alexander_Kiev » |
Зарегистрирован |
С уважением, Александр.
|
|
|
|
|