Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Флейм (http://www.flasher.ru/forum/forumdisplay.php?f=53)
-   -   Быдлокод? (http://www.flasher.ru/forum/showthread.php?t=146816)

Хомяк 23.11.2010 23:02

я не покажу вам свои ранние работы :D

orcpochta 24.11.2010 13:43

Как бы вы проверили наличие/отсутствие элемента в массиве или векторе и почему?

Код AS3:

if (vect.indexOf(element) != -1) { ... }; //наличие
if (vect.indexOf(element) == -1) { ... }; //отсутствие
 
if (vect.indexOf(element) is uint) { ... }; //наличие
if (!(vect.indexOf(element) is uint)) { ... }; //отсутствие
 
if (vect.indexOf(element) >= 0) { ... }; //наличие
if (vect.indexOf(element) < 0) { ... }; //отсутствие

Есть ли принципиальная разница в производительности этих операций (на больших объемах элементов в векторе естественно)? Если есть, то кто кого и где об этом почитать?

wvxvw 24.11.2010 14:09

Я сравниваю с -1, мне кажется, что так нагляднее, но это чисто субъективно.

incvizitor 24.11.2010 14:16

Код AS3:

if (vect.indexOf(element) != -1) { ... }; //наличие

По ходу просто первый бит посмотрит, увидит что там 0 и сразу же вернёт false. В Z80 было так, но с тех пор технологии могли измениться :)
А вот в случае когда надо вернуть true - вопрос спорный :)

i.o. 24.11.2010 14:18

Код AS3:

if (vect.indexOf(element) >= 0) { ... }; //наличие
if (vect.indexOf(element) < 0) { ... }; //отсутствие


iNils 24.11.2010 14:30

Я вообще избегаю использовать >=, <= и !=, еще со времен as 1/2 :)

orcpochta 24.11.2010 14:33

Цитата:

Сообщение от iNils (Сообщение 952041)
Я вообще избегаю использовать >=, <= и !=, еще со времен as 1/2 :)

Почему?

Как тогда вы бы получили наличие/отсутствие? is uint/ == -1 ?

Psycho Tiger 24.11.2010 14:34

Цитата:

По ходу просто первый бит посмотрит, увидит что там 0 и сразу же вернёт false.
А если вернёт число 2? 00000010 - а вернёт true.

@iNils,
Цитата:

Я вообще избегаю использовать >=, <= и !=, еще со времен as 1/2
почему?

orcpochta 24.11.2010 14:39

Цитата:

Сообщение от Psycho Tiger (Сообщение 952043)
А если вернёт число 2? 00000010 - а вернёт true.

первый - в смысле знаковый имелось в виду (вероятно)

iNils 24.11.2010 14:39

AS 1/2 на много был медленнее, чем AS3. А данные сравнения использовали две команды вместо одной, как <, > или ==. Поэтому часто, в процессе оптимизации быстродействия в циклах, делались замены. Сейчас это конечно смешно, но привычка осталась.


Часовой пояс GMT +4, время: 19:30.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.