Форум русскоязычного сообщества Ubuntu


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: C++ что выгоднее, switch или множественный if в выборе из 3?  (Прочитано 4086 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Шинш

  • Автор темы
  • Гость
в переменной класса хранится одно из 3 значений - (гость, пользователь, админ).
Для проверки того что хранится, удобнее свитчем проверять или 2 if ?

Оффлайн MEXAHOTABOP

  • Активист
  • *
  • Сообщений: 902
    • Просмотр профиля
сделай юниттест и поделись результатами)
http://fonline.ru/ заходите

Оффлайн di-erz

  • Активист
  • *
  • Сообщений: 364
  • Не ангел, крыльев нету...
    • Просмотр профиля
    • Sanaviron
switch быстрее
Большинство проблем от невнимательности, остальные от лени..
[Acer Aspire 5738G, ATI Mobility Radeon HD 4570, Ubuntu 12.04 LTS]
[HP ENVY m6-1106er AMD A10-4600M, Radeon HD 7660G/7670M, Ubuntu 14.04.2]

Шинш

  • Автор темы
  • Гость
MEXAHOTABOP,

(Нажмите, чтобы показать/скрыть)

не могу придумать как((( не хватает как понимаю ф-и clock()  :(

Пользователь решил продолжить мысль 27 Октября 2012, 20:09:47:
den4ik_13rus,
спасибо)
« Последнее редактирование: 27 Октября 2012, 20:09:47 от Шинш »

Оффлайн mastepaner

  • Новичок
  • *
  • Сообщений: 30
    • Просмотр профиля
Шинш, а куда у тебя потерялись break-и в switch?
И ещё, перепиши плиз с enum-ами, вроде enum User { guest, user, admin };
« Последнее редактирование: 27 Октября 2012, 21:14:29 от mastepaner »

Шинш

  • Автор темы
  • Гость
mastepaner,
(Нажмите, чтобы показать/скрыть)

в emit тут не нужно, хватит запомнить значение (кто именно) и проверять...

Lifewalker

  • Автор темы
  • Гость
Компильни не в машинный код, а в ассемблер и глянь.

Шинш

  • Автор темы
  • Гость
Lifewalker,
я не изучал его еще ((( может в январе когда сессия будет у людей зимняя сяду за него только, или летом потом уже только (

Оффлайн mastepaner

  • Новичок
  • *
  • Сообщений: 30
    • Просмотр профиля
в emit тут не нужно, хватит запомнить значение (кто именно) и проверять...
emit? оговорочки от Qt4? :)
enum это хорошо, в с++11 оно ещё и типобезопасно. К тому же лучше читается. К тому же no magic number. Ну и наконец - если бы ты сделал с enum, то сам бы увидел, что именно - if-ы или switch - красивее смотрится. И тему можно было бы закрывать: от текста программы требуется забота о читателе и ясность изложения, а не мифические выигрыши на две-три ассемблерные операции. Программы пишутся для людей, а не для компьютеров.
« Последнее редактирование: 27 Октября 2012, 23:26:49 от mastepaner »

Оффлайн Protopopulus

  • Старожил
  • *
  • Сообщений: 1695
  • А чего вы так смотрите?..
    • Просмотр профиля
switch рациональнее при долгосрочной поддержке программы. В switch  добавить значение - не проблема, а вот с if  будет больше гемора... Хотя, если одно значение встречается в 95% случаев, например, то if может быть быстрее.
Если ты владеешь знаниями, то и знания владеют тобой. (с) Protopopulus

Шинш

  • Автор темы
  • Гость
mastepaner,
(Нажмите, чтобы показать/скрыть)

спасибо)) я с НГ про нее не вспоминал даже, пришлось гуглить даже :D а в пред посту подумал оговорка :)



что switch удобнее для восприятия убедили))
по времени как проверить?(( почему не показывает у меня clock? как увеличить точность времени?
P.S. сорь что не в новой теме...
« Последнее редактирование: 27 Октября 2012, 23:45:06 от Шинш »

Оффлайн di-erz

  • Активист
  • *
  • Сообщений: 364
  • Не ангел, крыльев нету...
    • Просмотр профиля
    • Sanaviron
За тебя давно уже всё проверили!
Погугли "c++ switch vs if", на винограде хорошая статья!
Большинство проблем от невнимательности, остальные от лени..
[Acer Aspire 5738G, ATI Mobility Radeon HD 4570, Ubuntu 12.04 LTS]
[HP ENVY m6-1106er AMD A10-4600M, Radeon HD 7660G/7670M, Ubuntu 14.04.2]

Оффлайн Yurror

  • Старожил
  • *
  • Сообщений: 1966
    • Просмотр профиля
Шинш,
Поздравляю! Ты измеришь с точностью примерно +/- бесконечность =)
Не ну ты конечно нашел гениальный способ измерять скорость исполнения 3х (ну хрен с ним пусть будет 30 или даже 300 один хрен) инструкций =)
ты на точность этого clock посмотри и на частоту своего процессора...
тебе не ассемблер надо учить а метрологию =)
Юмористы...

Intel VTune Performance Analyzer вот им вероятно получится ближе к истине да и то скорее фуфел намеряет чем правду.

Ты не те вопросы задаёшь. Главное не что быстрее switch или if-elseif-else а что будет понятнее написано.
Оптимизировать будешь то, на что profiler покажет.
Юмористы...

Ну "ржу нимагу" с этой ветки  :2funny:

Оффлайн di-erz

  • Активист
  • *
  • Сообщений: 364
  • Не ангел, крыльев нету...
    • Просмотр профиля
    • Sanaviron
Yurror, над тобой тоже так ржали, уверен на 99%!
Большинство проблем от невнимательности, остальные от лени..
[Acer Aspire 5738G, ATI Mobility Radeon HD 4570, Ubuntu 12.04 LTS]
[HP ENVY m6-1106er AMD A10-4600M, Radeon HD 7660G/7670M, Ubuntu 14.04.2]

Шинш

  • Автор темы
  • Гость
Yurror,
я вас как бы не ограничиваю в посмеяться, ваше право, главное чтобы сперва помогли раз знаете так много, т.к. тут выясняю то, что сами найти не могут...
кстати, точного ответа вы так и не дали, как измерить :)

 

Страница сгенерирована за 0.034 секунд. Запросов: 25.