Re: Удаление лишних пробелов | |
---|---|
Jlutko Автор Сообщений: 161 Откуда: Пермская область Дата регистрации: 27.09.2005 |
Ну здесь Вы не правы.
Да, есть конкретная трабла... Да, я ее решил в рамках FoxPro... Но есть понятие "обучение". И мне это интересно! |
Re: Удаление лишних пробелов | |
---|---|
Jlutko Автор Сообщений: 161 Откуда: Пермская область Дата регистрации: 27.09.2005 |
Вспоинил свой первый комп... И первый драйвер, что печатал... РЕСПЕКТ! |
Re: Удаление лишних пробелов | |
---|---|
ssa Сообщений: 13008 Откуда: Москва Дата регистрации: 23.03.2005 |
А вот ни фига и не спортивный, самый что ни на есть практический. Очистка данных перед загрузкой на sql сервер. Даже на моих не слишком больших объемах и то заметно. ------------------ Лень - это неосознанная мудрость. |
Re: Удаление лишних пробелов | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Смотря каких данных... Если это строки (одно поле) по 100-200 символов с парой-тройкой "больших отступов", то даже чисто фоксовый цикл на 2-3 итерации исполнится этак раз в 10 быстрее чем собственно обращение к серверу для сохранения этой записи. И особо большого смысла в оптимизации я не вижу - при том что для эстетов есть reduce - наверняка не супер-оптимально написанный, но существенно быстрее фоксовой реализации.
Конечно, если это "Война и Мир", то имеет смысл озаботиться оптимизацией ассемблерного кода. И даже распараллеливанием работы, отказом от хранения всего содержимого одновременно в памяти (тем более два раза) и прочими нюансами... ------------------ WBR, Igor |
Re: Удаление лишних пробелов | |
---|---|
Jlutko Автор Сообщений: 161 Откуда: Пермская область Дата регистрации: 27.09.2005 |
Абсолютно согласен!
Речь идет в выгрузке данных в "кликнт-банк" - Вполне осязаямоя задача. |
Re: Удаление лишних пробелов | |
---|---|
spinz Сообщений: 5263 Дата регистрации: 21.01.2016 |
Ну как-то так, только сам алгоритм, без пролога и эпилога функции. У кого есть желание, переложите это в маш.коды для фокса и запилите тест на мегабайтных строках с длинными последовательностями пробелов и не-пробелов. Мне лень))
Исправлено 1 раз(а). Последнее : spinz, 13.01.18 14:33 |
Re: Удаление лишних пробелов | |
---|---|
Simple777 Сообщений: 33855 Дата регистрации: 05.11.2006 |
Я же говорю - BM, 4 сезон, 1 серия.
Исправлено 1 раз(а). Последнее : Simple777, 13.01.18 14:53 |
Re: Удаление лишних пробелов | |
---|---|
of63 Сообщений: 25256 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
Не знаю, о чем спор (о скорости выполнения? о нужности убирания лишних пробелов?), но бывает, что скорость особо не нужна, тогда решается на фоксе. Если надо побыстрее, то есть SYS(2600) - операции с байтами в памяти. И наконец на ассемблере, может с применением новых команд процессора (например, для управления гиперзвуковыми боеголовками в реальном времени на фоксе на штатовском бытовом проце и ОСи).
Вот тут делали похожее - перестановка байтов в строке forum.foxclub.ru На всякий приложу заготовку для экспериментов из той ветки от leonid-а же: |
Re: Удаление лишних пробелов | |
---|---|
Simple777 Сообщений: 33855 Дата регистрации: 05.11.2006 |
Насчет ассемблерных вставок "вообще". Если я правильно понял то, что говорит по этому поводу Taran, то ассемблерные вставки в FoxPro - штука не очень надежная, и при интенсивном использовании могут приводить к серьезным глюкам. Что характерно, leonid не стал возражать по этому поводу - то ли ему "влом" возражать, то ли он с этим утверждением согласен.
|
Re: Удаление лишних пробелов | |
---|---|
of63 Сообщений: 25256 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
Комп вообще ненадежная штука, и ОСь, и фокс, и програмер. Щас например сплошные косяки в космонавтике по причине ПО, потому что много деталей в устройстве, причем если хотя бы одну составляющую не учесть, сломать - ломается весь прибор... Поэтому пиши на фоксе, он надежен, как время показало, а ассемблер - только при необходимости.
|
Re: Удаление лишних пробелов | |
---|---|
Simple777 Сообщений: 33855 Дата регистрации: 05.11.2006 |
FPD - да, VFP - наврятли. |
Re: Удаление лишних пробелов | |
---|---|
spinz Сообщений: 5263 Дата регистрации: 21.01.2016 |
Да ничо не надежно. Вот прошьет твой процессор быстрый нейтрон из далекой галактики и всё пропало.
|
Re: Удаление лишних пробелов | |
---|---|
of63 Сообщений: 25256 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
Меня не подводил. Его ваяли еще те ребята, которые ФПД родили, поверь на слово, по нем видно, что не утратили совместимость с командами (аж с ФПД-1), не утратили дух - простота, не стали делать монстра - не стали навязывать фреймверк навроде дотнета. Все в нем работает.
|
Re: Удаление лишних пробелов | |
---|---|
Simple777 Сообщений: 33855 Дата регистрации: 05.11.2006 |
Однако C0000005 его компрометирует. |
Re: Удаление лишних пробелов | |
---|---|
of63 Сообщений: 25256 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
Давно не видел C..005. Которые были ошибки, те были не с фоксом связанные, а с... сам чего-то накосячил. У самого фокса огрехи есть (не C..005, а баги, фичи), но они известны, и обходятся.
Вот последние ошибки vfp9err.log, не часто, и то - это на машине разработчика. Исправлено 1 раз(а). Последнее : of63, 13.01.18 16:40 |
Re: Удаление лишних пробелов | |
---|---|
spinz Сообщений: 5263 Дата регистрации: 21.01.2016 |
Запилил таки тест на фоксе - результаты очень близкие.
Что весьма странно. Я сделал тупо строку длиной 10М (больше фокс уже начинает ругаться на нехватку памяти), состоящую из непробельных символов Казалось бы, 10 млн итераций кода
должно быть прилично медленней 10млн итераций выполнения одной команды
Однако нифига не так. Видимо, процессоры настолько быстры, что 10млн это очень мало.Надо будет еще потестить через RDTSC на голой системе без ОС, с более длинными строками. |
Re: Удаление лишних пробелов | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Если C005 возникает на пустом месте, значит это аппаратная проблема (сбой памяти, процессора, реже - диска или сети). И никакой FPD в таких случаях не будет вести себя "надёжнее". А т.к. сам DOS достаточно хлипкая система, то скорее всего там где VFP "вываливается" по c005, DOS+FPD банально зависнут или "перегрузят" машину. Программные же ошибки - ну часть из них настолько же серьёзна что повалит и FPD - я правда не в курсе какая именно там возникнет ошибка, но это можно в принципе проверить. "Испорченные" dbf/cdx/fpt файлы - вполне себе могут свалить FPD. Часть, конечно, возникает за счёт ошибок в подключемых компонентах - ActiveX, ODBC драйвера, всякие разные "левые" dll-ки и fll-ки. Естественно что поскольку в FPD возможность подключения внешних модулей гораздо более ограничена (но она таки есть!), там меньше шанс поиметь проблему из-за такого "сомнительного" компонента. Но и в VFP зачастую вполне себе можно обойтись без "красоты". "Подключение" ассемблерных вставок само по себе не является проблемой, и не добавляет никакого риска. Проблемой является лишь написание корректного и безопасного кода для таких вставок - это абсолютно идентично написанию сишных вставок в виде fll для VFP и plb для FPD - если написать их неаккуратно, то можно поиметь кучу проблем. Замечательная особенность DOS-а, это полное отсутствие разделения между работающими процессами (т.к. система НЕ многозадачная, и любое "параллельное" исполнение задач в ней реализуется весьма и весьма ненадёжными средствами). Т.е. в "настоящей" связке DOS+FPD проблема возникшая в любой подключенной "в фон" (так называемые TSR-задачи), либо же в явно запущенной из FPD программе вызывает крах всей системы. Для VFP запуск внешнего процесса, или же поломка в каком-то фоновом виндовом процессе (если таковая поломка не сломает собственно всю винду, что для современных версий гораздо менее вероятно чем для старинных Win9x) пройдёт совершенно незамеченной. Даже крах вызванной из фокса программы при адекватной обработке (т.е. осознать что оно "не сработало" и, к примеру, брать выходные файлы нельзя) тоже пройдёт незамеченным. ------------------ WBR, Igor |
Re: Удаление лишних пробелов | |
---|---|
of63 Сообщений: 25256 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
> 10 млн итераций кода должно быть прилично медленней одной команды rep movsb
Наверное, общее время (количество байтов) должно быть большим, много тиков таймера, чтобы сравнивать. Если скорость памяти 1ГГц = 1000 Млн (слов(?) в сек), то 10 Млн читаются/пишутся за 0.01 с... А сам код проги, из 1 строки, или из 10-100, все равно считывается процом 1 раз, преобразуется в предсказателе, и при частоте выполнения в 2-3 ГГц наверное мало роляет... |
Re: Удаление лишних пробелов | |
---|---|
vic7tar Сообщений: 48 Дата регистрации: 27.02.2017 |
|
Re: Удаление лишних пробелов | |
---|---|
Simple777 Сообщений: 33855 Дата регистрации: 05.11.2006 |
Дак никто не спорит, что связка DOS+FPD хуже, нежели WIN+FPD. Какой бы ни была устаревшей DOS, с каждой новой версией Windows среда псевдо-DOS таки улучшалась. Иными словами, в скрытой форме MS-DOS таки существовала и развивалась. Что же касаемо критических ошибок в FPD. Бывают, но крайне редко это бывает "по неизвестной причине". Да и по известным причинам это бывает очень редко. Встерал пару раз, быть может, когда система вешалась из-за испорченных таблиц или индексов, но и в этом случае какое-то сообщение выдавалось типа: Invalid buffpoint call. И если в FPD и возникают критические ошибки, то в подавляющем большинстве случаев они воспроизводимы, и можно точно увидеть команду, на которой система вешается. Думается, что в VFP ситуация с критическими ошибками не такая прозрачная. |
© 2000-2024 Fox Club  |