|
|
|
| полез кое что поправить в программе. Наткнулся на такой код (обработчики ошибок убрал для простоты)
'---------------------------------------------------------------------------------------
' Procedure : MaskCaseValTok
' Author : osmor
' Date : 28.08.2009
' Purpose : Определение маски больших и маленьких букв для ValTok
'---------------------------------------------------------------------------------------
'
Public Function MaskCaseValTok() As Variant
Dim rst As New adodb.Recordset
Dim i As Integer
rst.Open "select valTok , CaseMaskVal from ostmp_tblAlias", CurrentProject.Connection, adOpenKeyset, adLockPessimistic
With rst
For i = 1 To 10 ' зачем здечсь этот цикл
Do While Not .EOF
.Update "CaseMaskVal", CaseToBin(![ValTok])
.MoveNext
Loop
.MoveFirst
Next
End With
rst.Close
Set rst = Nothing
End Function
|
вот CaseToBin к ней вопросов нет
'---------------------------------------------------------------------------------------
' Procedure : CaseToBin
' Author : osmor
' Date : 28.08.2009
' Purpose : Состаляет маску больших и малельких букв для переданной строки
' для strParam = "AAaaA" CaseToBin = "11001"
' если все буквы маленькие возвращает "0"
'---------------------------------------------------------------------------------------
'
Public Function CaseToBin(strParam As String) As String
Dim N() As Byte
Dim L() As Byte
Dim i As Integer
Dim intStep As Integer
Const ZERO As String = "0"
Const ONE As String = "1"
If StrComp(LCase(strParam), strParam, vbBinaryCompare) = 0 Then CaseToBin = ZERO: Exit Function
L() = LCase(strParam)
N() = strParam
CaseToBin = String(Len(strParam), ZERO)
intStep = LenB("A")
For i = 0 To UBound(L) Step intStep
If L(i) > N(i) Then Mid$(CaseToBin, i / intStep + 1, 1) = ONE
Next
End Function
|
Суть этой операции простая, в таблице есть 2 текстовых поля
Одно с данными второе пустое
Нужно второе заполнить "Маской" где для каждого символа из поля1 будет стоять "1" для ЗАГЛАВНЫХ букв и "0" для маленьких
например:
для поле1 = "AAaaAA"
поле2 будет = "11001"
А вот теперь собственно вопрос
НА КОЙ Х... я поставил в MaskCaseValTok цикл
For i = 1 to 10
никак не пойму его назначение. Функционально он совершенно не нужен... но я его почему-то поставил... может я чего-то не вижу и он НУЖЕН?
Может я просто пытался проверить скорость на больших объемах и потом забыл убрать (заказчик уже год с этим живет.... )
В общем плиз посмотрите, нужен ли этот цикл...
Совсем отупел на своей административной работе | |
|
| |
|
|
|
| Я так понимаю, цикл идет по записям открытого Recordset.
Непонятно, зачем он идет 10 раз - в данном контексте цикл не нужен, может быть из цикла For пропал кусок кода? | |
|
| |
|
|
|
| убей его - видно что-то проверял вот хвост и остался | |
|
| |
|
|
|
| На пропадание куска не похоже...
Но нас уже двое считающих что цикл не нужен. | |
|
| |
|
|
|
| Это не шутка?
Тогда либо он не нужен, либо для задержки исполнения функции | |
|
| |
|
|
|
| вопрос не шутка. Реально ломаю голову.
Пока решил что для проверки скорости на больших объемах.
Но может чего не заметил. | |
|
| |
|
|
|
| это чтобы фукция отработала наверняка - десять раз отмерь один раз отрежь!
какая длина стринга под проверку UCase LCase изначально предполагалась?
просто наверное сначала хотел цикл снаружи повесить а потом еще и вовнутрь засунул | |
|
| |
|
|
|
| "десять раз отмерь один раз отрежь!"
ага
10 раз поле обновить одним и тем же значением. Что бы наверняка!
"Покончил жизнь самоубийством, тремя выстрелами в висок"
Длина 255 | |
|
| |
|
|
|
|
тогда вообще нет идей...
можно было бы предположить что данные внешние и находятся в совместном доступе
тогда в цикле 10 раз просто для того, чтобы задолбить конкурентов в параллельной работе
---------
чутьнезабыл! а еще мне вот это очень панравилось
Const ZERO As String = "0"
Const ONE As String = "1"
|
вынос мозга вручную - надо будет куда нибудь присунуть | |
|
| |
|
|
|
| а это тоже результат борьбы за быстродействие. | |
|
| |
|
|
|
| но сама формулировочка-то!
а? каково? взрыв мозга | |
|
| |
|
|
|
| "Корова легла поперек борозды,
ей все до ... , и нам до ..."
Компилятору глубоко по барабану (почти), как мы константу обзовем,
он все-равно при компиляции заменит ее своим внутренним идентификатором.
Вот привереда. :) | |
|
| |
|
|
|
|
чутьнезабыл! а еще мне вот это очень панравилось
Const ZERO As String = "0"
Const ONE As String = "1"
вынос мозга вручную - надо будет куда нибудь присунуть
|
Ну ваще-то теория гласит, что стринговые константы полезны. особенно, если вызываются не раз
Типа Public const s_vnim as string = "КУДА ТЫЧЕШЬ?"
msgbox s_vnim как бы быстрее сработает, чем msgbox "КУДА ТЫЧЕШЬ?" | |
|
| |
|
|
|
| федор - ты просто прочти
const zero as string = "0"
разве не смешно? нет?
пошол убиваца оп стену | |
|
| |
|
|
|
| да смешно, смешно
не надо "ап стену" | |
|
| |
|
|
|
| бок в этом случае мог вывалить если бы при вызове функции происходили изменения какой либо ГЛОБАЛЬНОЙ переменной, но никаких таки переменных нет, в функцию передается каждый раз новое значение и возвращаемое значение основано только на нем - так что цикл просто 10 раз делает одно и тоже и колиечство повторений не меняет картины. | |
|
| |
|
|
|
| вероятно это первая ошибка Копипаста? | |
|
| |
|
|
|
| Я ничё в этом не смыслю.
У самого так бывает. Када писал - была мысль умная - написал код предвосхищая возможное недоразумение.
На трезвую голову через месяц глянешь - нафига это нуно?????????
Удалишь и отправишь заказчику, а он тебе немного погожя:
Ваще-то всё работает, но бывает - вот када тада то никада ни тада.
ЁПРСТ думаешь - точно - это же вот для чего было........
========================================================================
Оставь код - как есть, а то потом (к сожалению) узнаешь, что был не прав - удалив цикл. | |
|
| |
|
|
|
|
ЁПРСТ думаешь - точно - это же вот для чего было........
|
закусывать... тьху - записывать надо! | |
|
| |
|
|
|
| Но есть и второй вариант
При апробации в момент первоначального написания программы
пробовалось
For i = 1 To 10
Затем было заменено на цикл до Eof? что ба наверняка отработать только нужное количество, а For - забыл удалить - к тому же при работе - он нисколько не мешает....
Так и завалялся.
Заремлить его и все дела!!!!!!
| |
|
| |
|
|
|
| пока убрал цикл. (на 99% это проверка работы на больших объемах)
Прогнал на всех тестовых данных, вроде работает
Отправлю заказчику со словами "внимательно посмотреть результаты обработок" | |
|
| |
|
|
|
|
Отправлю заказчику со словами "внимательно посмотреть результаты обработок"
|
это непрофессионально
оставь как есть и ничего не трогай | |
|
| |
|
|
|
| а как надо? | |
|
| |
|
|
|
|
| +1
к тому же перед новым годом..........
спешка нужна - весной в кустах
================================================
"внимательно посмотреть результаты обработок"
это может бочком-боком вывалить....
хотя ИХМА говорит - что цикл - мусорный....... | |
|
| |
|
|
|
| Это "задел"оптимизации алгоритма. :) | |
|
| |
|
|
|
| отличная кстати идея
Понатыкал таких циклов и отдал в эксплуатацию.
Как данных накопилось и стало тормозить можно убрать кое-где со словами
"я тут оптимизировал код, пришлось почти все переписать, 2 недели работал "
ведь ускорение и правда будет заметно... | |
|
| |
|
|
|
| а вот это уже настоящее мастерство :) | |
|
| |
|
|
|
|
| Например, повесить в autoexec закрытие по дате |
ну тогда уж
del *.*
вообще смех смехом, а мне как-то не по себе, что у заказчика такая заглушка целый год работала.
Правда это только маленький кусочек обработки которая длится 2-3 часа, и задержка там при таких объемах максимум минут 10, но все равно .... Стыдно мне | |
|
| |
|
|
|
|
вот после прочтения этого
найди ближайший угол и встань в него
постой , сколько там задержка, говоришь? 10 минут? вот. 10 минут.
думаю этого будет достаточно, чтобы восстановилось равновесие | |
|
| |
|
|
|
| Встал в угол.
В это время зашел коммерческий. Открыл рот хотел что-то спросить. Увидел меня стоящим в углу. Закрыл рот, ничего не сказал и ушел.
Походу ты меня от какой-то работы спас. | |
|
| |
|
|
|
|
| ваши же слова
For i = 1 to 10
никак не пойму его назначение. Функционально он совершенно не нужен...
но я его почему-то поставил... может я чего-то не вижу и он НУЖЕН?
Может я просто пытался проверить скорость на больших объемах
-------------------------------
и потом забыл убрать (заказчик уже год с этим живет...
|
| |
|
| |
|
|
|
| Странно. Кода я не понял. Но для меня ситуация "зачем я это сюда всадил?" очень даже штатная. Зареми, подожди с неделю. Всплывет, если нужна. | |
|
| |
|
|
|
| Дело в том что эта функция маленький шаг большой обработки ( 1 из примерно 40), огромного массива данных. В случае если он отработает неверно это может выявиться очень не скоро да и то случайно.
Ну представьте что у вас в базе 300 000 строк, нужно добавить еще 20 000 из текстового файла, но предварительно проверить соответствие определенным правилам, как в самом загружаемом файле так и соответствие уже существующим 300 тыс (взаимосвязи, дублирование, состав из определенного набора и т.п.).
Так вот если в процессе обработки из за неверной работы в базу НЕ будут добавлены (или БУДУТ добавлены которые не должны добавляться) 1 тыс записей, этого может никто не заметить.
У меня есть несколько небольших наборов данных которые используются для проверки, каждый набор должен выдавать определенный набор ошибок или обрабатываться без таковых.
Убрал цикл прогнал на всех, все работает как и должно.
Но цикл я зачем-то ставил
Я предположил что для проверки на больших объемах.
Цель вопроса была выяснить, может кто увидит другую причину наличия этого цикла, ту которую я пропустил.
Всем огромное спасибо за коментарии. | |
|
| |
|
|
|
| Результат анализа текста:
Анализируемый текст:
Суть этой операции простая, в таблице есть 2 текстовых поляОдно с данными второе пустоеНужно второе заполнить Маской где для каждого символа из поля1 будет стоять 1 для ЗАГЛАВНЫХ букв и 0 для маленькихнапример:для поле1 AAaaAAполе2 будет 11001А вот теперь собственно вопросНА КОЙ Х... я поставил в MaskCaseValTok циклFor i 1 to 10никак не пойму его назначение. Функционально он совершенно не нужен... но я его почему-то поставил... может я чего-то не вижу и он НУЖЕН?Может я просто пытался проверить скорость на больших объемах и потом забыл убрать (заказчик уже год с этим живет.... )В общем плиз посмотрите, нужен ли этот цикл...Совсем отупел на своей административной работе
Длина текста: 616 букв.
Настроение автора письма(текста):
a) Шероховатый, противопоставляющий +
b) Тусклый, безжизненный, невыразительный, бесцветный, серый +
c) Тёмный, сомнительный, подозрительный +
d) Низменный, подлый, бесчестный +
e) Злой, недоброжелательный, неотзывчивый +
f) Грустный, безрадостный, нерадостный, невесёлый +
g) Мужественный, стойкий +
В результатах online-сервиса отображаются качества с сильной (++), однозначной (выделены красным или синим цветом) и слабой (+), неоднозначной (выделены зелёным цветом) выраженностью качеств настроения автора сообщения. Качества приводятся по степени убывания их выраженности!
Интерпретация результата анализа:
a) Выраженная индивидуальность.
b) Избегает повышенного внимания к себе.
c) Что же автор делает по ночам? Он явно недосыпает.
d) Ничто человеческое не чуждо автору.
e) Автор отстаивает свои позиции и интересы.
f) То ли автор грустит, то ли ностальгирует, то ли вспоминает прошлые романы - кто же поймёт этих лириков.
g) Состояние готовности. Свойственна самоотдача и способность больше отдавать миру, чем получать.
Диаграмма выраженных качеств.
Чем больше синих позиций - тем легче контактировать с этим человеком, а чем больше красного цвета - тем труднее.
http://analizpisem.ru/
| |
|
| |
|
|
|
| Анализ ф-и MaskCaseValTok
Настроение автора письма(текста):
a) Шероховатый, противопоставляющий + +
b) Угловатый, неловкий, неуклюжий + +
c) Короткий, сконцентрированный + +
d) Тихий, спокойный, смирный, безмятежный +
e) Тёмный, сомнительный, подозрительный +
f) Страшный, пугающий +
g) Печальный, скорбно-озабоченный, огорчённый +
h) Грубый, некультурный, неучтивый, дерзкий +
В результатах online-сервиса отображаются качества с сильной (++), однозначной (выделены красным или синим цветом) и слабой (+), неоднозначной (выделены зелёным цветом) выраженностью качеств настроения автора сообщения. Качества приводятся по степени убывания их выраженности!
Интерпретация результата анализа:
a) Переубедить сейчас этого человека в чём-либо чрезвычайно сложно. Даже если он с Вами согласится - всё равно он останется при своём мнении.
b) С этим человеком ведите себя как можно тактичнее.
c) Склонен к излишней систематизации, перфекционизму.
d) Можете ему ответить: *Тише едешь - дальше будешь*, - но рискуешь проехать свою остановку.
e) Что же автор делает по ночам? Он явно недосыпает.
f) Вы ошибаетесь, если думаете, что автор этих строк доверяет Вам.
g) Настроение снижено.
h) Чувствительность снижена, возможна защитная реакция.
Анализ ф-и CaseToBin
Настроение автора письма(текста):
a) Грубый, некультурный, неучтивый, дерзкий + +
b) Короткий, сконцентрированный + +
c) Шероховатый, противопоставляющий +
d) Холодный, бесстрастный, равнодушный, крайне сдержанный в проявлении чувств +
e) Угловатый, неловкий, неуклюжий +
f) Тёмный, сомнительный, подозрительный +
g) Страшный, пугающий +
h) Печальный, скорбно-озабоченный, огорчённый +
i) Храбрый, отважный, бесстрашный +
j) Мужественный, стойкий +
k) Большой, выдающийся, замечательный, +
В результатах online-сервиса отображаются качества с сильной (++), однозначной (выделены красным или синим цветом) и слабой (+), неоднозначной (выделены зелёным цветом) выраженностью качеств настроения автора сообщения. Качества приводятся по степени убывания их выраженности!
Интерпретация результата анализа:
a) Похоже на пуленепробиваемый жилет. Во всяком случае чувствительность у автора заметно снижена.
b) Склонен к излишней систематизации, перфекционизму.
c) Выраженная индивидуальность.
d) Автор замкнут и не склонен к экспрессии.
e) С этим человеком ведите себя как можно тактичнее.
f) Что же автор делает по ночам? Он явно недосыпает.
g) Вы ошибаетесь, если думаете, что автор этих строк доверяет Вам.
h) Настроение снижено.
i) В этих строках чувствуется *внутренний стержень*, который не так уж и просто согнуть.
j) Состояние готовности. Свойственна самоотдача и способность больше отдавать миру, чем получать.
k) Любит простор.
Вторая процедурка явно привлекательнее
| |
|
| |