Страница: 1 | 2 | 3 | 4 |
Вопрос: уважаемые новички
Добавлено: 21.05.06 20:18
Автор вопроса: student-uni
Ответы
Всего ответов: 48
Номер ответа: 31
Автор ответа:
HOOLIGAN
Вопросов: 0
Ответов: 1066
Профиль | | #31
Добавлено: 23.05.06 10:09
Morpheus
Split будет медленее, чем InStrRev, т.к Split создаёт множество строк (по числу слэшей+1), а с InStrRev создаётся только одна строка.
Чтобы сделать быстрее, чем с InStrRev, нужно вспомнить, что такое BSTR, и как передаются строки в функцию.
Сделал два варианта, но Neco молчит, поэтому сравнить с результатом Neco могу только косвенно, путём сравнения с InStrRev.
Три момента:
1. Отказ от передачи строки как по ByVal, так и по ByRef. Строка передаётся непосредственно, через StrPtr(FullPath).
2. Никаких определений длины строки (типа len, lstrlen и т.п.). Вся информация уже заложена в BSTR, поэтому две простейшие операции - чтение длины из переменной и прибавление этой длины к адресу строки - позволяют очень быстро сместиться к концу строки.
3. Отказ от возврата результата из функции VB-методом As String, и замена Function (...) As String на Sub (StrPtr(FullPath), StrPtr(fName)).
По своему строению VB-строка (BSTR) очень быстрый тип строки, вот только VB постоянно создаёт ненужные копии строк, при этом происходит и преобразование строки из widechar в multibyte. Обработка строк же происходит на W2K и выше в widechar, поэтому нужно снова преобразовывать из multibyte в widechar. И после обработки и получения результата приходится снова выполнять обратную цепочку преобразований и копирования в исходный адрес. Всё это не добавляет скорости.
1-й вариант функции GetName предусматривает отказ от передачи строки как копии оригинала (используется передача указателя StrPtr). Возвращается результат As String.
2-й вариант процедуры GetName предусматривает дополнительно к первому отказ от возврата As String: адрес выходной строки передаётся в процедуру для заполнения данными.
Результаты относительно приведённого выше способа с InStrRev:
InStrRev - 4.63
GetName_1 - 3.57
GetName_2 - 0.36
Код GetName приводить не буду, кому надо - делайте сами, как делать подробно расписано выше.
Приложите хотя бы минимум усилий, у получите весьма хороший результат.
А кто не может - юзайте .нет
Номер ответа: 32
Автор ответа:
student-uni
Вопросов: 122
Ответов: 257
Профиль | | #32
Добавлено: 23.05.06 11:20
А я вот пытался по "GO" SQL-скрипт парсить
(SPLIT-OM)
и столкнулся с проблемои
1. "GOTO" - он тоже как "GO" парсит,
2. тогда я сказал парсить по CHR13+GO+CHR13
но он игнорирует последнии гоу (у него после "O" нет вообше символа)
3. когда я загружаю етот скрипт через FTP /как бинарныи фаил/
то там проявлается еше куча всаких символов переноса строки,
так что парсить совсем сложно.
Я выкрутился тем, что закачал на ФТП специально в ручную
отформатированныи мнои фаил, которыи легко парсится по "_GO_"
Но ето же изврашение,
Буду признателен за идеи
Спасибо
Номер ответа: 33
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #33
Добавлено: 23.05.06 11:38
Угу, мы - гуры. Особенно я - самая гуристая гура
Номер ответа: 34
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #34
Добавлено: 23.05.06 14:53
Фетишизировать технологию .NET все же не стоит. Она может быть хороша только в:
1) Своём классе. Попытки создания Блокнота на .NET всё ещё терпят фиаско.
2) В стране с развитыми компьтерными технологиями. Если у 1-10% компьютеризированных жителей бывшего т.н. "соцлагеря" есть "Пентиум 4", то в США тот же П4 есть у любого бомжа/негра, не говоря уже о социальных, учебных и других заведениях.
Конечно при решении второй проблемы первая уменьшается, но универсальность всё равно остаётся за пределами этой технологии. Это при том что вторую проблему решить практически невозможно, ну разве что переселится за океан или переселить "заокеан" сюда.
Номер ответа: 35
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #35
Добавлено: 23.05.06 16:57
угу, а фишка то, в том что новички то как раз блокноты и пишут, что они могут написать ещё? и при этом рвут одно место доказывая что нет просто супепр пупер шо блокнот супер пупер ведь работает, а самое главное всё в пару строк...
Номер ответа: 36
Автор ответа:
Morpheus
Вопросов: 224
Ответов: 3777
Web-сайт:
Профиль | | #36
Добавлено: 23.05.06 17:48
ээээ, ну что ж вы - во то что пару строк - это же плюс - надо вот прогу на заказ сдеалать - накатал и забыл (если типа учёта фильтров как я делал так там вообще начхать на скорость - циклов очень мало).
так что не всё так плохо же хоть и (хехе)
Короче, для себя пишем на нормальных языках - и запускается быстро итд.. а для заказчика пишем на точке
Номер ответа: 37
Автор ответа:
User Unknown
Вечный Юзер!
ICQ: uu@jabber.cz
Вопросов: 120
Ответов: 3302
Профиль | | #37
Добавлено: 23.05.06 18:21
Не так. На чём скажут, на том и пишем. Вот истинный девиз ПрограмМастера.
Номер ответа: 38
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #38
Добавлено: 23.05.06 20:05
не интересно, регресс, деградация...
Номер ответа: 39
Автор ответа:
Morpheus
Вопросов: 224
Ответов: 3777
Web-сайт:
Профиль | | #39
Добавлено: 23.05.06 20:20
а чё ты думал? работа по найму ....
Номер ответа: 40
Автор ответа:
Morpheus
Вопросов: 224
Ответов: 3777
Web-сайт:
Профиль | | #40
Добавлено: 23.05.06 20:47
ну я и не отказывался - всё же точка иногда подходит когда 80% времени всё равно уходин на оформление интерфейса
Номер ответа: 41
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #41
Добавлено: 23.05.06 21:18
пойми, ты смотришь со стороны новичка на .NET, а об этом писали выше...
Номер ответа: 42
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #42
Добавлено: 23.05.06 22:22
Вообще то "Блокнот" - это так, к примеру, чтобы показать класс програм, к которому он относится. Так что делать упор на нём всё же не стоит
Мда, не перевелись ещё сверхчеловеки на замле русской. Вот если бы как в фильме "Косильщик лужаек" изучать технологии со скоростью перелистывания книги. Но такие МегаМастера с аномалией гипертрофированой памяти встречаются крайне редко.
Номер ответа: 43
Автор ответа:
student-uni
Вопросов: 122
Ответов: 257
Профиль | | #43
Добавлено: 23.05.06 23:01
А на мой вопрос про парсинг кто нибудь ответит ?
Отчасти я согласен с Хакером. После мощи С++, Дот Нет кажется игрушкой. И он таки да отучает думать например о том как можно одним махом выделить пространство под двумерный массив. (И не забыть его освободить) , или не забыть деструктор.
Но надо различать:
- есть те которые пишут для юзеров
- и есть те которые пишут для тех кто пишет для юзеров
Дот Нет Это обычный Би-Ту-Би (бизнес для бизнеса) от Майкрософт, с помощью чего они популяризируют себя. Точно так же как и оптовики не продают трусы розничным покупателям, а продают розничным торговым точкам.
Я считаю, что минимум С++ надо хотя бы для себя поучить. Тогда многое станет в Дот Нете понятно так сказать с "философской точки зрения".
Но справедливости ради стоит заметить, что на С++ сегодня далеко не уедешь, если конечно не напишешь свой ИнтеллиСенс к примеру. (Но для этого надо как минимум изучить ещё дискретную математику.)
Рапид аппликейшн девелопмент сегодня в моде.
Более того, я считаю, что он будет набирать обороты.
Один профессор по предмету "операционные системы" заставлял всех делать курсовой по разработке сервера на С под Юникс. Параллельно читал курс Си. Когда его спрашивают "А как это будет под Виндовс" он становится в 3-ю позицию и говорит "Я не знаю что такое Виндовс". Мне кажетс я это большой недальновидностью. Он конечно не глупый мужик - год трахался
и сам написал сервак на С под Юникс, к которому можно удаленно подключаться и (компилировать)проекты в группе, и ещё какую то хрень, На своем ноутбуке он упорно совокупляется с Линуксом, но если завтра выйдет Фреймворк под Линукс - мне будет его очень жаль.
Нельзя говроить, что есть Дот Нет и больше ничего не надо, но и не стоит недооценивать Дот НЕт. Всегда были низкоуровневые и высокоуровневые языки и никто не сравнивал Ассемблер с Клиппером. (Я кстати работал и на том и на другом). В одних случаях нужен один, в других - другой. (Хотя В первом для того чтобы напечатать один символ надо написать простыню кода а во втором одно слово ПРИНТ - никто не говорил что Клиппер отучает думать. Это был шикарный язык для обработки БД)
И никогда нельзя сказать, что "Лонг Лив Форева", а что "Маст Дай". Самое важное вовремя пересесть на правильное направление и вовремя с него соскочить, чего я лично себе и всем и желаю.
Номер ответа: 44
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #44
Добавлено: 23.05.06 23:49
Наверное в позицию он случайно стал , а не знает скорее всего от того что не академическая эта операционка, тем более что не open-source (до недавних пор во всяком случае).
и сам написал сервак на С под Юникс, к которому можно удаленно подключаться и (компилировать)проекты в группе, и ещё какую то хрень, На своем ноутбуке он упорно совокупляется с Линуксом,
Тут вообще сплошная порнуха пошла.
Допустим во сне ему явится провидение в образе Большого Б. и наставит его на путь истинный. Как по твоему он должен будет привязать Фреймворк(даже с большой буквы) к предмету "операционные системы"?
Номер ответа: 45
Автор ответа:
someone
Вопросов: 215
Ответов: 1596
Web-сайт:
Профиль | | #45
Добавлено: 24.05.06 09:33