 |
|
 |
|
|
|
Последние Файлы GTA 4 |
Последние Файлы GTA-MP |
Реклама |
|
|
|
|
|
Что лучше switch или for
| |
| Vagrant | Дата: Четверг, 28.04.2011, 19:06 | Сообщение # 1 |
|
Уважаемый человек
Группа:
I'm V.I.P.
Сообщений: 904
Награды: 21
Город: Находка
Репутация: 489
Замечания: 0%
Статус: 
| Доброго времени суток. Есть 2 варианта как сделать определённую идею. Пример кода: Вариант №1: Code stock KGSet(kg) { switch(kg) { case 100: { kg = 1000; return kg;} case 110: { kg = 1100; return kg;} case 120: { kg = 1200; return kg;} case 130: { kg = 1300; return kg;} case 140: { kg = 1400; return kg;} case 150: { kg = 1500; return kg;} case 160: { kg = 1600; return kg;} case 170: { kg = 1700; return kg;} case 180: { kg = 1800; return kg;} case 190: { kg = 1900; return kg;} case 200: { kg = 2000; return kg;} case 210: { kg = 2100; return kg;} case 220: { kg = 2200; return kg;} case 230: { kg = 2300; return kg;} case 240: { kg = 2400; return kg;} case 250: { kg = 2500; return kg;} case 260: { kg = 2600; return kg;} case 270: { kg = 2700; return kg;} case 280: { kg = 2800; return kg;} case 290: { kg = 2900; return kg;} case 300: { kg = 3000; return kg;} } } Вариант №2: Code stock KGSet(kg) { new KG1[] = {100,110,120,130,140,150,160,170,180,190,200,210,220,230,240,250,260,270,280,290,300}, KG2[] = {1000,1100,1200,1300,1400,1500,1600,1700,1800,1900,2000,2100,2200,2300,2400,2500,2600,2700,2800,2900,3000}, w,z;
for(z=sizeof(KG1),w=0;w<z;w++) if(kg == KG1[w]) {kg = KG2[w]; break;} return kg; } Какой из вариантов будет лучшим при очень частом использовании. Допустим что с интервалом в 300 мс. если чисел будет не 20 а к примеру 60.
Человек учась ходить падает, и только падая, он учится ходить! Мои работы: [GM] W.F.S.A. V. 1.0 - 100% [GM] San Fierro Enigmatic (TDM) V. 1.0 - 100% [FS] Clan House V. 1.0 - 100% [FS] Save Car Tun System V. 1.0 - 100% [FS] Vagrant Anti-CapsLock V. 2.1 - 100% [FS] Vagrant Anti-Advertise V. 1.1, V. 2.0 - 100% [APP] SA-MP Interior Viewer V. 1.0 - 100%
Принимаю заказы на помощь в скриптинге!
|
| |
|
|
| toneysix | Дата: Четверг, 28.04.2011, 19:25 | Сообщение # 2 |
|
Джэдай
Группа:
I'm V.I.P.
Сообщений: 1731
Награды: 77
Город: Салават
Репутация: 1825
Замечания: 0%
Статус: 
| switch работает быстрее, чем операторы условия, это доказанный мною и MX_MASTER факт. Но здесь, я бы использован for, в силу того, что всегда нужно создавать механизм, который бы не зависел от функции, то есть ты добавил что-то новое в массив, и это было актуальным, нежели ты будешь обращаться в switch и добавлять новые кейсы. Определенно, switch будет быстрее, жаль, что в павн в switch'е нельзя использовать в кейсах переменные константы. P.S: Твои функции можно также оптимизировать, у тебя есть лишние действия, к тому же, это вполне можно перевести на макросы, будет также по-быстрее Первая функция: #define KGSet(%0) (%0*10) Можно из чисел для возврата строить алгоритм, в данном случаи я его построил, если же будет иначе, придется строить по-другому, но в целом все так.
Русскоязычныи портал о MTA/GTA-IV-MP | http://multi-theft-auto.ru
Сообщение отредактировал toneysix - Четверг, 28.04.2011, 19:32 |
| |
|
|
| stepmex | Дата: Четверг, 28.04.2011, 19:59 | Сообщение # 3 |
|
Мастер джэдай
Группа:
Продвинутые
Сообщений: 2914
Награды: 35
Город: Е-бург
Репутация: 1032
Замечания: 0%
Статус: 
| А ничего сто это две абсолютно разне вещи предназначенные для разных целей?
И создал Бог женщину!.. Существо получилось злобное, но симпатичное...
|
| |
|
|
| Dima-kun | Дата: Четверг, 28.04.2011, 20:01 | Сообщение # 4 |
|
Группа:
Разработчики
Сообщений: 6269
Награды: 72
Репутация: 3512
Замечания: 0%
Статус: 
| stepmex, да, это разное. Но он спрашивает на конкретном примере. Какой из вариантов будет быстрее и лучше работать.
Мои работы: [INC] Сборник d_includes [LAST],[FS] New Demage Effect,[FS]Авто-Поворотники, [FS]mp3player,[FS] Fun Chat Game,[FS] Car Buy Syst,[FS] Anti-AirBrk,[INC] d_setpos, [GM] Game Move v0.1,[FS+include]Super-Armour [0.3z],[FS + Include] Multi Checkpoints
|
| |
|
|
| stepmex | Дата: Четверг, 28.04.2011, 20:17 | Сообщение # 5 |
|
Мастер джэдай
Группа:
Продвинутые
Сообщений: 2914
Награды: 35
Город: Е-бург
Репутация: 1032
Замечания: 0%
Статус: 
| Quote (toneysix) это вполне можно перевести на макросы, будет также по-быстрее чушь собачья. #define всего навсего служит для удобства програмирования, и скорости он не добавляет. Его цель найти код по шаблону и заменить его другим, все. Так что что ты напишешь код руками, что по средствам макроса, разницы в скорости не будет!Добавлено (28.04.2011, 20:17) --------------------------------------------- так: Code KGSet(&kg) { kg *= 10; }
И создал Бог женщину!.. Существо получилось злобное, но симпатичное...
|
| |
|
|
| toneysix | Дата: Четверг, 28.04.2011, 20:18 | Сообщение # 6 |
|
Джэдай
Группа:
I'm V.I.P.
Сообщений: 1731
Награды: 77
Город: Салават
Репутация: 1825
Замечания: 0%
Статус: 
| stepmex поспорим что добавляет? Функция все равно занимает время, а это макрос, который заменяется препроцессором, давай сравним время при множественном вызове. http://best.of.by/paste/d7cc6f7ab Результат: Макрос - 5; Функция - 12;
Русскоязычныи портал о MTA/GTA-IV-MP | http://multi-theft-auto.ru
Сообщение отредактировал toneysix - Четверг, 28.04.2011, 20:27 |
| |
|
|
| stepmex | Дата: Четверг, 28.04.2011, 20:31 | Сообщение # 7 |
|
Мастер джэдай
Группа:
Продвинутые
Сообщений: 2914
Награды: 35
Город: Е-бург
Репутация: 1032
Замечания: 0%
Статус: 
| toneysix, для тех кто читает по диагонали, речь не про функции. Ты видимо не догоняешь что #define KGSet(%0) (%0*10) равносильно записи i *= 10; Могу тебе и сравнениее устроить: Code #define KGSet(%0) (%0*2) public OnGameModeInit() { new count = GetTickCount(),a = 2; for(new i; i < 9000000; i++) { a = KGSet(a); } printf("if else: %d (%d)", GetTickCount() - count, a); count = GetTickCount(); a = 2; for(new i; i < 9000000; i++) { a = a*2; } printf("switch: %d (%d)", GetTickCount() - count, a); } Ты облажался: Code [22:25:01] define: 864 (0) [22:25:02] *: 848 (0)
[22:25:33] define: 868 (0) [22:25:34] *: 846 (0)
[22:26:04] define: 845 (0) [22:26:05] *: 838 (0) Так что бзди больше!
И создал Бог женщину!.. Существо получилось злобное, но симпатичное...
Сообщение отредактировал stepmex - Четверг, 28.04.2011, 20:33 |
| |
|
|
| toneysix | Дата: Четверг, 28.04.2011, 20:32 | Сообщение # 8 |
|
Джэдай
Группа:
I'm V.I.P.
Сообщений: 1731
Награды: 77
Город: Салават
Репутация: 1825
Замечания: 0%
Статус: 
| stepmex я как раз все догоняю в отличии от тебя, ты говорил мне, что это аналог и скорости это не прибавит, в данном случаи целесообразно использовать макрос, так как он будет в два раза быстрее, чем твоя функция, так как функцию ещё надо вызвать и на это тоже идут миллисекунды, именно об этом веду речь я, что ты думаешь я так и не понял. P.S: Ты не веришь что макрос быстрее? Сейчас сделаю лично для тебя скрин, явно ты лукавишь не может функция быть БЫСТРЕЕ, тем более так.
Русскоязычныи портал о MTA/GTA-IV-MP | http://multi-theft-auto.ru
Сообщение отредактировал toneysix - Четверг, 28.04.2011, 20:37 |
| |
|
|
| stepmex | Дата: Четверг, 28.04.2011, 20:35 | Сообщение # 9 |
|
Мастер джэдай
Группа:
Продвинутые
Сообщений: 2914
Награды: 35
Город: Е-бург
Репутация: 1032
Замечания: 0%
Статус: 
| toneysix, повторяюсь ещё раз, не надо сравнивать 2 разные вещи! Почему ты сравниваешь замену кода и внешню функцию?! С внешней функцией конечно будет медленнее, ты посмотри в моем примере с чем я сраниваю макрос, это не функция!
И создал Бог женщину!.. Существо получилось злобное, но симпатичное...
|
| |
|
|
| toneysix | Дата: Четверг, 28.04.2011, 20:39 | Сообщение # 10 |
|
Джэдай
Группа:
I'm V.I.P.
Сообщений: 1731
Награды: 77
Город: Салават
Репутация: 1825
Замечания: 0%
Статус: 
| stepmex опять ты мне про это, я тебе говорил именно о функции с макросом, посмотри что ты выше написал цитирую: Quote чушь собачья. #define всего навсего служит для удобства програмирования, и скорости он не добавляет. Его цель найти код по шаблону и заменить его другим, все. Так что что ты напишешь код руками, что по средствам макроса, разницы в скорости не будет! Ответил я так полагаю ты на моё сообщение цитирую: Quote Твои функции можно также оптимизировать, у тебя есть лишние действия, к тому же, это вполне можно перевести на макросы, будет также по-быстрее Имеется ввиду быстрее по отношению к функции, читать надо внимательно.
Русскоязычныи портал о MTA/GTA-IV-MP | http://multi-theft-auto.ru
|
| |
|
|
| stepmex | Дата: Четверг, 28.04.2011, 20:44 | Сообщение # 11 |
|
Мастер джэдай
Группа:
Продвинутые
Сообщений: 2914
Награды: 35
Город: Е-бург
Репутация: 1032
Замечания: 0%
Статус: 
| toneysix, по отношению к функции да, но макрос скорости не добавляет.
И создал Бог женщину!.. Существо получилось злобное, но симпатичное...
|
| |
|
|
| toneysix | Дата: Четверг, 28.04.2011, 20:46 | Сообщение # 12 |
|
Джэдай
Группа:
I'm V.I.P.
Сообщений: 1731
Награды: 77
Город: Салават
Репутация: 1825
Замечания: 0%
Статус: 
| stepmex я этого и не говорил заметь.
Русскоязычныи портал о MTA/GTA-IV-MP | http://multi-theft-auto.ru
|
| |
|
|
| Vagrant | Дата: Пятница, 29.04.2011, 12:02 | Сообщение # 13 |
|
Уважаемый человек
Группа:
I'm V.I.P.
Сообщений: 904
Награды: 21
Город: Находка
Репутация: 489
Замечания: 0%
Статус: 
| toneysix, В итоге вывод из этого следует такой что лучшим вариантом будет макрос. Но если допустим за место цифр 100...3000 будут буквы. То как именно это можно будет написать с помощью макросов? И вообще есть ли где-нибудь русский учебник по написанию макросов в павно?
Человек учась ходить падает, и только падая, он учится ходить! Мои работы: [GM] W.F.S.A. V. 1.0 - 100% [GM] San Fierro Enigmatic (TDM) V. 1.0 - 100% [FS] Clan House V. 1.0 - 100% [FS] Save Car Tun System V. 1.0 - 100% [FS] Vagrant Anti-CapsLock V. 2.1 - 100% [FS] Vagrant Anti-Advertise V. 1.1, V. 2.0 - 100% [APP] SA-MP Interior Viewer V. 1.0 - 100%
Принимаю заказы на помощь в скриптинге!
Сообщение отредактировал Vagrant - Пятница, 29.04.2011, 12:03 |
| |
|
|
| toneysix | Дата: Пятница, 29.04.2011, 12:18 | Сообщение # 14 |
|
Джэдай
Группа:
I'm V.I.P.
Сообщений: 1731
Награды: 77
Город: Салават
Репутация: 1825
Замечания: 0%
Статус: 
| Vagrant буквы ты имеешь ввиду символы? Символы тоже можно найти по алгоритму, исходя что ты планируешь сделать. На счет учебника я не знаю, у меня есть очень старая книга по C/C++ языку, там очень хорошо приводятся данные, все понятно и подробно написано.
Русскоязычныи портал о MTA/GTA-IV-MP | http://multi-theft-auto.ru
|
| |
|
|
| Vagrant | Дата: Пятница, 29.04.2011, 16:24 | Сообщение # 15 |
|
Уважаемый человек
Группа:
I'm V.I.P.
Сообщений: 904
Награды: 21
Город: Находка
Репутация: 489
Замечания: 0%
Статус: 
| toneysix, залей пожалуйста книгу куда-нибудь. А там я уже разберусь как и с символами попробовать.
Человек учась ходить падает, и только падая, он учится ходить! Мои работы: [GM] W.F.S.A. V. 1.0 - 100% [GM] San Fierro Enigmatic (TDM) V. 1.0 - 100% [FS] Clan House V. 1.0 - 100% [FS] Save Car Tun System V. 1.0 - 100% [FS] Vagrant Anti-CapsLock V. 2.1 - 100% [FS] Vagrant Anti-Advertise V. 1.1, V. 2.0 - 100% [APP] SA-MP Interior Viewer V. 1.0 - 100%
Принимаю заказы на помощь в скриптинге!
|
| |
|
|
|
 |
|
 | |
| |
|