|
|
|
Отличие функций с $ и без
|
|||
|---|---|---|---|
|
#18+
ок - будем изучать пулемет. -) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2004, 15:19 |
|
||
|
Отличие функций с $ и без
|
|||
|---|---|---|---|
|
#18+
Neue- зачем это нужно скорость работы функций с $ на порядок выше, чем без него. В P-коде ситуация еще хуже. Neue- как это поимать (преобразование из Variant в String)? способ представления Variant в String разный. (об этом уже писали) Пример: Dim p1 As String Dim p2 As String p1 = "test" p2 = Left(p1, 2) соответствует следующим вызовам: rtcLeftCharVar; __vbaStrVarMove; __vbaStrMove; __vbaStrMove; vbaFreeVar p2 = Left$(p1, 2) соответствует: rtcLeftCharBstr; __vbaStrMove; Почувствовали разницу? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2004, 15:25 |
|
||
|
Отличие функций с $ и без
|
|||
|---|---|---|---|
|
#18+
авторВ P-коде ситуация еще хуже конкретно для строковых функций я бы с этим не согласился - как раз режим интерпретации p-кода практически полностью нивелирует разницу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2004, 15:34 |
|
||
|
Отличие функций с $ и без
|
|||
|---|---|---|---|
|
#18+
Обычные преобразования Variant'а в String хоть и жрут ресурс, но немного. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. Почувствуйте разницу Вызовы функций - разница чуть побольшеъ Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. Так что " на порядок " - это слишком ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2004, 15:45 |
|
||
|
Отличие функций с $ и без
|
|||
|---|---|---|---|
|
#18+
Мои результаты: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2004, 15:53 |
|
||
|
Отличие функций с $ и без
|
|||
|---|---|---|---|
|
#18+
Я вот тут подумал... Для того, чтобы получить выигрыш в одну секунду на использовании Left$ вместо Left - пришлось обработать 10 миллионов строк. Я ведь эта... с базами данных работаю... Если мне придется VBA-шным кодом обработать 10 миллионов записей - о проблемах быстродействия Left и Left$ я буду думать в последнюю очередь 2 VIG У тебя для варианта с Variant'ом лишнее преобразование вкралось - строка в Variant пакуется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2004, 15:58 |
|
||
|
Отличие функций с $ и без
|
|||
|---|---|---|---|
|
#18+
O.K вот "более жизненный" вариант Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Код: plaintext 1. > о проблемах быстродействия Left и Left$ я буду думать в последнюю очередь Да уж ,живем в такое время ,что проще купить новый компьютер ,чем ломать голову над оптимизацией кода (: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2004, 16:13 |
|
||
|
Отличие функций с $ и без
|
|||
|---|---|---|---|
|
#18+
2 VIG вот "более жизненный" вариант Твой "более жизненный" вариант на самом деле еще менее корректен. Там уже два лишних преобразования - сначала строка "test" преобразуется в Variant, а потом полученный из Mid'а Variant преобразуется в строку. Да уж ,живем в такое время ,что проще купить новый компьютер ,чем ломать голову над оптимизацией кода (: Это пример ненужной оптимизации, над которой не надо ломать голову. Выигрыша на задачах БД просто не заметишь. Ты же не библиотеку обработки регулярных выражений пишешь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2004, 16:19 |
|
||
|
Отличие функций с $ и без
|
|||
|---|---|---|---|
|
#18+
после того, как разродился участием в "непечатных символах", решил пооптимизировать Гетсев dhTranslate вариант1 получился такой - замена & на оператор MID (главное улучшение > 1.5 раз) И заменой InStr на InStrB (еще процентов 20) (не помню, знал ли раньше, но вперился в голову этот тип мне не так давно) получилось от 1.5 до 3.5 раз лучше по сравнению с исходным на двух наборах дальше, следуя своим ожиданиям, высказанным в "непечатных символах", преписал вариант1, заменив строковые функции на обработку массивов интов. В том числе, заменив InStrB на вложенный цикл линейного поиска по строке заменяемых символов. С ИЗУМЛЕНИЕМ обнаружил, что этот вариант в 18 раз хуже варианта1. Тут же перенес в VB и сделал 2 компиляции - одна - native, другая - p-code. Так вот при p-code вариант2 в 12 раз хуже варианта1 При native вариант2 ВДВОЕ ЛУЧШЕ варианта1 СИЛЬНО призадумался - чуть было не решился поменять линейный поиск на двоичный с предварительной сортировкой ShellSort-ом. И преобразованием всего хозяйства в класс. Потом понял - что в среднем потребуются несколько тысяч вызовов, чтобы опрадать предварительную сортировку. Плюнул и остановился на вариант1 вот такая оптимизация. ЗЫ (приводить ли код и какой или ну его?) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2004, 16:38 |
|
||
|
Отличие функций с $ и без
|
|||
|---|---|---|---|
|
#18+
2 Лох Позорный согласен, что "на порядок" - это слишком, максимальный выигрыш только в два раза. На порядок, это если сравнивать Variant c числовыми типами. (сам не тестировал - так в книжке сказано). А с $ или без него - это действительно мелочи, если работаешь с таким монстром, как Access. Равно как спорить насколько быстрее побежит черапаха, если ей на красовках шнурки погладить. Да не побежит она!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2004, 16:58 |
|
||
|
Отличие функций с $ и без
|
|||
|---|---|---|---|
|
#18+
2 ЛП "более жизненный" он потому, что четко показывает разницу между Mid$ и Mid, прочих равных условиях. >Выигрыша на задачах БД просто не заметишь Да я не спорю.Так ,пофилософствовать захотелось ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2004, 16:58 |
|
||
|
Отличие функций с $ и без
|
|||
|---|---|---|---|
|
#18+
2 marvan про черепаху, пожалуй слишком по моим замерам скорость исполнения VB p-кода опережает исполнение VBA-кода Access-ом в среднем НЕ БОЛЕЕ чем в два раза. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2004, 17:12 |
|
||
|
Отличие функций с $ и без
|
|||
|---|---|---|---|
|
#18+
2 Victosha Дык и VB - тоже черепаха, если говорим о массовых операциях над строками, или о сложной математике. Насчет строк - ну есть такой маленький интерпретатор, Perl называется. Он регулярные выражения щелкает с такой скоростью, что программисты на ассемблере стоят в сторонке и нервно курят. Так что по сравнению с Perl'ом - все черепахи. Только я на Perl'е не стану рисовать кнопочки/формочки ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2004, 17:20 |
|
||
|
Отличие функций с $ и без
|
|||
|---|---|---|---|
|
#18+
2 Victosha про черепаху речь не о VB p-коде и VBA-коде Access, а о быстродействии Access, как базы данных. Написал раз экспертную систему, которая в качестве БД использовала Access. Для принятия решения многократно перелопачивалась база объёмом в гигабайт. Код был оптимизирован "под самое не балуйся". Операция на идентификацию строки выполнялась минуту. Чуть медленнее, чем это делает оператор, да и не всегда точно. С тех пор злой я на Access, по тихоньку перехожу на собственные форматы хранения данных. С $ или без него - а повиснеш на запросе и ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2004, 17:28 |
|
||
|
Отличие функций с $ и без
|
|||
|---|---|---|---|
|
#18+
про Perl если всерьез - то с выражениями (регулярными) надо с УМОМ и РАССТАНОВКОЙ - в кривых руках считать будет - мало не покажется. Скорость обработки нелинейно зависит от сложности выражения. Так что в простых случаях - самолет. В сложных - я даже комментировать не буду. Проще переформулировать задачу. Сам не сравнивал, но не ожидаю катастрофичекой победы по скорости перла над RegExp в Видновом скрипт-движке. (Гибгость и общая мощность - другое дело) ЗЫ Еще раз про p-code Год или два назад наткнулся на статейку не помню какого мериканского или канадского университету, датированную то ли семьдесят последним то ли восемьдесят ранним годом. Так там автор обосновывал мысль о том, что по мере развития процессорных технологий скорость исполнения p-кода под управлением правильно написанного скриптового движка НЕИЗБЕЖНО ОПЕРЕДИТ скорость исполнения native-приложений, по крайней мере на определенном круге задач. Идея заключается в чтом, что при достаточном количестве процессорного кеша сам исполнитель, будучи в него загруженным, и загружая p-code фактически как данные для себя, никогда не вызовет инвалидации процессорного кэша. Для native-приложения это практически нереально. Надо только, чтобы p-код был самодостаточным и не вызывал обращения к "внешнему операционному миру" непосредственно. К сожалению, исполнитель p-кода VB/VBA ПО АРХИТЕКТУРЕ не является движком такого типа. (Ближе всего, на мой взгляд, к этой схеме Java) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2004, 17:40 |
|
||
|
Отличие функций с $ и без
|
|||
|---|---|---|---|
|
#18+
>злой я на Access, по тихоньку перехожу на собственные форматы хранения данных Предлагаю до кучи отказатся от операционной системы. Тормозит она настоящий полет мысли :)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2004, 17:44 |
|
||
|
Отличие функций с $ и без
|
|||
|---|---|---|---|
|
#18+
> Предлагаю до кучи отказатся от операционной системы Мысль не новая ,но интересная ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2004, 17:48 |
|
||
|
Отличие функций с $ и без
|
|||
|---|---|---|---|
|
#18+
2 marvan Для принятия решения многократно перелопачивалась база объёмом в гигабайт. А че так хиленько-то? Че, на терабайт не насобирали экспертных данных что-ли? Не перестаю удивляться людской глупости. На основе настольной (для тупых повторяю - настольной ) СУБД строить гигабайтные экспертные системы... это да... Этак можно крутейший спортивный мотоцикл черепахой обозвать. Потому что он ну очччень медленно везет двадцатитонный прицеп. И ломается при этом часто. А про собственные форматы - ну да... Советую в "Сравнение СУБД" заглянуть, там есть интересные топики по этому поводу 2 Victosha Так там автор обосновывал мысль о том, что по мере развития процессорных технологий скорость исполнения p-кода под управлением правильно написанного скриптового движка НЕИЗБЕЖНО ОПЕРЕДИТ скорость исполнения native-приложений, по крайней мере на определенном круге задач. Рихтер в своей книжке про дотнет говорит то же самое. Правда мотивирует этот тезис немного по-другому. Навскидку помню пример с JIT-оптимизацией исполняемого кода под текущий процессор со всеми его чудесными MMX-ами, SSE-шками, 3DNow и прочей великолепной лабудой. А инвалидация процессорного кеша - это тоже аргумент... Надо будет обдумать на досуге. Хотя... ну не будет происходить инвалидации исполняемого кода (рантайм библиотек), зато постоянно не будет хватать места под данные (собственно P-Code) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2004, 17:57 |
|
||
|
Отличие функций с $ и без
|
|||
|---|---|---|---|
|
#18+
авторне будет хватать места под данные (собственно P-Code) а сколько кэша уже сейчас в Intel P4 Extreme Edition? а каков размер p-кода "среднего" VB-приложения? (ответ - малого десятки, среднего сотни килобайт) КАК раз именно, один раз ЦЕЛИКОМ загрузившись в кеш p-код и не будет вызывать инвалидации. А наличие типизации в синтаксисе такого скрипт-языка - БОЛЬШОЙ тоому помошник. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2004, 18:02 |
|
||
|
Отличие функций с $ и без
|
|||
|---|---|---|---|
|
#18+
а каков размер p-кода "среднего" VB-приложения? (ответ - малого десятки, среднего сотни килобайт) эгегегегей у меня с десяток мегабайт аксесовского "пи-кода" Пусть есть приложение, занимающее в пикоде сотню-другую килобайт. Ну и собственно рантайм - пару мег (цифры с потолка). Если оно влезает в кеш в таком виде - дык кто ему мешает влезать в кеш в скомпиленном в native-код exe-шнике? Основная радость может быть достигнута при использовании одного рантайма на все процессы. А это уже дотнет какой-то (или марка сигарет/остров х.. знает где) получается ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2004, 18:14 |
|
||
|
Отличие функций с $ и без
|
|||
|---|---|---|---|
|
#18+
2 Лох Позорный Че, на терабайт не насобирали экспертных данных что-ли исходных данных было 250 мегов, до гигабайта она разраслась в процессе оптимизации (когда в жертву производительности приносится обём и структура данных) На основе настольной (для тупых повторяю - настольной) СУБД строить гигабайтные экспертные системы Для не настольной СУБД нужен не настольный комп. Да, собственно, потому её и использовал, что она настольная. Этак можно крутейший спортивный мотоцикл черепахой обозвать Согласен, "Не по Сеньке шапка" оказалась. Речь идёт о том, что оптимизация VB кода бесполезна если на работу с БД уходит много "машинных ресурсов" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2004, 18:25 |
|
||
|
Отличие функций с $ и без
|
|||
|---|---|---|---|
|
#18+
авторкто ему мешает влезать в кеш в скомпиленном в native-код тип в этом месте заключается в том, что различают кэш делится на кэш для кода и кэш для данных. Программу, в смысле кода исполнения, действительно, можно и уже сейчас, целиком разместить в процессорном кэше. Проблема с найтив-кодом, заключается в том, что как отдельные команды процессора, так и определенные их последовательности могут вызывать принудительную инвалидацию кэша данных, заставляя перезагружать данные из памяти. Это определяется, в том числе (и может быть в первую очередь) расположением адресов переменных в приложении ("выравниванием блока данных"). В скриптовых языках этого (перезагрузки из памяти данных) часто (не всегда) можно избежать. Утверждается, что при достаточно эффективном исполнителе, за счет резкого сокращения количества чтений/повторных чтений из памяти p-код имеет шанс обогнать native. По мне - так звучит правдоподобно. ЗЫ по поводу медленно на акцессе. Если организовывать перебор с возвратом, я хотел бы понять - на чем будет "нормально", не медленно. Акцесс, имхо, не причем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2004, 18:28 |
|
||
|
|

start [/forum/topic.php?fid=45&startmsg=32509313&tid=1674789]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
164ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
| others: | 240ms |
| total: | 498ms |

| 0 / 0 |
