Советы из раздела для всех. Тут даже авторства четкого нет, потому что до этого доходим на собственной шкуре ;) А одно из главных умений программиста - не принимать все на веру...
Федор 21.06.2001 | Cоветы по быстродействию. Может, кому пригодиться. Вот скачал давненько советы по быстродействию. Может, кому пригодиться. Винюсь – не запомнил ссылку! Кажется www.liac.nm.ru (Lider Access) 01. Используй оператор if else, вместо IIF[70%] 02. Используй Long т.е. Long лучше Вуte, Integer, конечно, varisnt [20%,50%] 03. Применяй if else, чем switsh; shoose [50%] 04. Лучше проверяй строку так len(s)=0, чем s = “” [40%] 05. Лучше инициализируй строку так s =vbnullstring, чем s ="" [65%] 06. Если возможно пиши так s = "АВ", чем s ="А" & "В" [85%] 07. Вставляй строку в текст так Мid$(а,3,4)="like". чем s = left$(8,2) & "like" & mid(з,7) [45%] 08. Сравнивай строки так if strcomp(s1,s2,vbtextcompare) =0, чем if ucase(s1)=ucase(s2)[55%] 09. Лучше используй $-функцию, т.е. left$ лучше left. [40%] 10. Цикл for …next. работает быстрее do...lоор [50%] 11. При обработке целых чисел пиши .j=i10, чем.) ji/10 [30%] 12. Точнее объявляй объекты: ав commandbutton лучше as control, еще лучше asobject [90%] 13. Цикл for Еасh..next лучше, чем цикл for…next семейств объектов [98%]. 14. Цикл for ...next лучше, чем цикл fог Еасh...next: для массивов [25%]. Р.s. 1. Все тесты на скорость придумали и провели для Асcess'а 2000; Кен Гетц, Пол Литвин и Майк Гилберт. Cамый короткий код не самый быстрый
| ДиД 21.06.2001 | Только добавьте, что это отрывок из книги Кен Гетц "Ассess 2000" т.1 | Timour 21.06.2001 | Просто мнение Как мне кажется пункты 1,3,5,6 не объективны и являются исключительно дефектами нынешней реализации Access Basic | Федор 22.06.2001 | Не поленился -проверил см.текст Public Sub testif() Dim d, t Dim i As Long Dim x, y As Double t = Time Randomize For i = 1 To 1000000 x = Rnd(i) y = Rnd(i) If x > y Then x = y Else x = 0 End If Next Debug.Print "if..Else t=", (Time - t) * 100000 Debug.Print "t=", DateDiff("s", t, Time) For i = 1 To 1000000 x = Rnd(i) y = Rnd(i) x = IIf(x > y, y, 0) Next Debug.Print "iif t=", (Time - t) * 100000 Debug.Print "t=", DateDiff("s", t, Time) End Sub ' РЕЗУЛЬТАТЫ AMD-500 'if..else t= 3,47222222222277 't = 3 'IIf t = 10, 4166666666683 't = 9
|
| Timour 22.06.2001 | Я имел в виду не то, что не доверяю приведенной информации, а то что для подобной разницы в производительности нет объективных предпосылок - я считаю ее дефектом Access Basic |
Просмотров: 5695
Ваш коментарий будет первым | | |