DioD
offline
Опыт:
45,134Активность: |
Знаете ли вы что...
1)
Код:
Очень сильно нагружает циклы даже если проверять с фиксированым значением. Избегайте наличия нескольких "exitwhen" внутри сложных конструкций, вы рискуете убить поток. 2) Код:
Каждое целое число может быть числом с плавающей точкой, но не наоборот. Внутри функций цисло с плавающей точкой обязательно должно иметь точку, или вы получите несовпадение типов. 3) Код:
Невозможно обнулить, эти значения обрабатываются автоматически. 4) Код:
Могут иметь значение "null" для boolean это равносильно false, а для строки "(null)". Использование строки null приводит к вертолёту, но всё же вы можете вывести это значение функциями вывода текста. 5) Код:
Можно вернуть постредством РБ как интегер, и наоборот, тут для строки можно добится еще одного значения "Вертолёт" обращение к строке которой несуществует посредством РБ крашит вар, это хорошо видно при загрузке игры в которой задействован этот метод. Отредактировано DioD, 01.03.2007 в 02:25. |
21.02.2007, 19:30 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DeT
offline
Опыт:
5,715Активность: |
Цитата:
DeT добавил: пачиму так? подробнее плиз |
|
21.02.2007, 21:11 | #2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
p01nTT
offline
Опыт:
11,160Активность: |
DioD строка разве не (null)
|
21.02.2007, 22:02 | #3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
NECros88
offline
Опыт:
16,351Активность: |
Цитата:
ммм... а можно вопрос поразвёрнутей? |
|
22.02.2007, 00:39 | #4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DioD
offline
Опыт:
45,134Активность: |
от того какие там скобки ничего не изменится
строка имеет значение "" когда вы например получаете субстринг 9-10 из строки длиной в 3 символа, это сделано для защиты от вертолётов.
Такая строка тоже есть строка, просто пустая, и она регестрируется движком и получает выделеный айди
null это действительно пустая строка, и обращение к такой строке выводит (null) на экран это вроде бы не инициализированая строка, хотя я сталкивался с такими строками только когда сам заносил такое значение.
третье состояние это несуществующая строка, такую строку можно получить только через ретурн баг и она мгновенно крашит вар. |
22.02.2007, 10:56 | #5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
FellGuard
Losyash
offline
Опыт:
39,547Активность: |
Гут, добавил бы что integer, real, string надо инициализировать перед действиями вида set i = i + 1
(local real r = 0, local integer i = 0, local string s = ""(особенно при работе со строками)) Не помню, надо ли инициализировать boolean перед действием типа set b = not b |
28.02.2007, 22:52 | #6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DioD
offline
Опыт:
45,134Активность: |
локалки стоит инициализировать всегда.
так как если попытаться что то сделать с переменными что не инициализированы умирает поток |
01.03.2007, 02:27 | #7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
J
expert
offline
Опыт:
48,447Активность: |
Цитата:
делал 100 раз, и в сложных консрукциях... почемуто никаких дефектов незамечал... |
|
01.03.2007, 02:45 | #8
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DioD
offline
Опыт:
45,134Активность: |
ну и какие это были констуркции? |
01.03.2007, 02:50 | #9
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
J
expert
offline
Опыт:
48,447Активность: |
DioD чет я заметил усмешку в твоем голосе... почему? в основном - в спелах. спелы не покажу...
|
01.03.2007, 02:57 | #10
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DioD
offline
Опыт:
45,134Активность: |
спеллы скорее всего не имели внутри переборов и сложных вызовов.
скажу прямо 2 поиска по группе (найти всех с наименьшей жизнью и второй с наибольшей маной) с условиями живут с эксит венами вешаются |
01.03.2007, 03:33 | #11
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
J
expert
offline
Опыт:
48,447Активность: |
а может быть другая причина подвешивания потока в таких случаях? мб просто болшое количество вызов функций, и вар прекращает выполнение? |
01.03.2007, 04:13 | #12
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Lord of Death
Потерянный надолго
offline
Опыт:
3,008Активность: |
Интересные заметки, про то что интегер ещё может стать реальной я не знал. |
01.03.2007, 07:02 | #13
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DioD
offline
Опыт:
45,134Активность: |
дело в том что если ты можешь присвоить 300там переменным значение или один раз включить эксит вэн в цикл.
я при заполнении массивов имел разницу в 1000 итераций между одним эксит веном и двумя. |
01.03.2007, 07:31 | #14
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
p01nTT
offline
Опыт:
11,160Активность: |
просто запущенный цикл с изменением целого и вывода(BJDebugMsg'om) его выполнился у меня 808 раз,с exitwhen i == 1000000 796 помоему,в то время как изменение значения set i = i + 1(без BJDebugMsg) и exitwhen'om срабатывал 23074,тоесть при exitwhen i == 23074(при exitwhen i == 100000 i было равно 23076,а без exitwhen'a 42857),на 1 больше и цикл не завершается, тоесть убивание потока происходит и без exitwhen'a, но он тоже влияет, тоесть максимальное количество циклов напрямую зависит от количества функций и exitwhen'ов. Кстати при затухании цикла и его невыполнении цикл не заканчиваетс и все функции после него не выполняются.
p01nTT добавил: далее: проверка цикла с 2мя переменными показала: без exitwhena: 23077 и 23076,с 15789 и 15789,с 2мя exitwhen'ами: 12000 и 12000,с нативкой CreateTrigger() без exitwhen'a - 21429 и 21428, с BJDebugMsg("a") и без exitwhena - 810 раз, тоесть BJ функции нагружают цикл в 100ни раз больше чем exitwhen, но exitwhen нагружает больше чем нативки раза в 1.5-2,то есть нельзя сказать что exitwhen сильно нагружает цикл |
01.03.2007, 10:06 | #15
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
J
expert
offline
Опыт:
48,447Активность: |
p01nTT вообщем как я и говорил... но нативки нагружают поток поразному, одни больше други меньше, такчто судить о том что чтото нативки быстрее/медленее exitwhen врятли можно
|
01.03.2007, 10:13 | #16
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
p01nTT
offline
Опыт:
11,160Активность: |
Jon ну это да, но всё таки если сравнивать BJ нативки и exitwhen, то exitwhen ~ native << BJ
следовательно exitwhen не особо сильно нагружает поток |
01.03.2007, 10:19 | #17
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Toadcop
offline
Опыт:
54,313Активность: |
да это известно кроме того что буль может быть нуль ?! мне кажетьса это ничего хорошего...
Цитата:
|
|
01.03.2007, 14:52 | #18
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DioD
offline
Опыт:
45,134Активность: |
дело в том что эксит вэн в сложных конструкциях сравнивает не с чистол а может с юнитом или с кешевыми записями, как в случае с таблицами, там вообще разница огромна. |
01.03.2007, 18:56 | #19
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
just_dont_do_it
...and never ever do it
offline
Опыт:
493Активность: |
Сильно повторяемые строчки кода грузят поток пропорционально сумме времени на вызов всех функций внутри них. exitwhen выполняется всегда при каждом проходе цикла и функционально эквивалентен if.
Поэтому тормоза в случае сильно тяжелых потоков и функций можно уменьшить, переделав сложное условие в nested if Код:
|
10.04.2007, 12:00 | #20
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|