Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Аналог switch, но более эффективный
|
|||
|---|---|---|---|
|
#18+
Предложенный мной способ предполагает что программа и вызываемая функция придерживаются определенного логического интерфейса при котором expression для switch - index для области area, содержащей таблицу переходов. Компилятор не сможет так оптимизировать, потому что синтаксис исходного текста не несет в себе информацию об expression более того, какого она типа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2015, 08:58 |
|
||
|
Аналог switch, но более эффективный
|
|||
|---|---|---|---|
|
#18+
Владимир2012Да ну ... Ну так обрати внимания на ссылку приведенную ниже твоего post .. По той ссылке написано то же самое что я сказал, только помимо этого приведены варианты реализации и маленьких наборов, которые оптимизируются по-другому. В целом, любые попытки реализовать более эффективный switch на уровне исходного кода, а не компилятором, не приведут к чему кроме нечитабельного кода. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2015, 09:06 |
|
||
|
Аналог switch, но более эффективный
|
|||
|---|---|---|---|
|
#18+
Владимир2012Предложенный мной способ Приведите 1) код с switch, 2) эквивалентный код с вашим способом 3) замеры скорости Пока этого всего нет и говорить не о чем. Мое предсказание - никакие "способы" не будут быстрее встроенного switch. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2015, 09:11 |
|
||
|
Аналог switch, но более эффективный
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyПо той ссылке написано то же самое что я сказал, только помимо этого приведены варианты реализации и маленьких наборов, которые оптимизируются по-другому. Там идет речь об оптимизации дерева переходов ... ..., а в предложенном способе имеем один array с ссылками и один goto. Почувствуй разницу ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2015, 09:14 |
|
||
|
Аналог switch, но более эффективный
|
|||
|---|---|---|---|
|
#18+
Владимир2012Почувствуй разницу .. Не могу почувствовать пока не предоставлены замеры скорости ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2015, 09:16 |
|
||
|
Аналог switch, но более эффективный
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyНе могу почувствовать пока не предоставлены замеры скорости Да ты прав. "Шас спою" ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2015, 09:22 |
|
||
|
Аналог switch, но более эффективный
|
|||
|---|---|---|---|
|
#18+
Интересно что в топике никто не обратил внимание на вероятности срабатывания кейсов. Это особенно касается трансляторов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2015, 09:31 |
|
||
|
Аналог switch, но более эффективный
|
|||
|---|---|---|---|
|
#18+
maytonИнтересно что в топике никто не обратил внимание на вероятности срабатывания кейсов. Ok! В тесте switch значение expression будет выбираться с использованием random. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2015, 11:30 |
|
||
|
Аналог switch, но более эффективный
|
|||
|---|---|---|---|
|
#18+
Ты наверное не понял мою мысль. При разработке синтаксических трансляторов один кейс может срабатывать в 97% случаев, другой в 2% а все остальные кейсы делят оставшися 1% (к примеру). Поэтому задача "умной" оптимизации (если ты хочешь таковую получить) должна базироваться на том что мы знаем гистограмму данных ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2015, 12:17 |
|
||
|
Аналог switch, но более эффективный
|
|||
|---|---|---|---|
|
#18+
Не сдаюсь ... C Programming: address of a label http://stackoverflow.com/questions/1777990/c-programming-address-of-a-label?rq=1 "... The C and C++ standards do not support this feature. However, the GNU Compiler Collection (GCC) includes a non-standard extension for doing this ..." PS: "Но все таки она вертится" ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2015, 16:10 |
|
||
|
Аналог switch, но более эффективный
|
|||
|---|---|---|---|
|
#18+
Владимир2012PS: Вот вспомнил о том какой ты труд приложил для достижения поставленной цели ... http://www.sql.ru/forum/1149455-1/generator-prostyh-chisel-do-10-9-za-5-sek Тому причина была хреновая погода, делать нечего, съездить на природу некуда ... вобщем в октябре-ноябре обращайся, буду бездельничать - поучавствую в любых бесполезных исследованиях. Чем мы хуже британских ученых? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2015, 16:32 |
|
||
|
Аналог switch, но более эффективный
|
|||
|---|---|---|---|
|
#18+
Dima TТому причина была хреновая погода, Вообщем займусь ка VM под CentOS. И вот в ней, то и проведу замеры под gcc. PS: "Наши руки не для скуки ..." ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2015, 16:43 |
|
||
|
Аналог switch, но более эффективный
|
|||
|---|---|---|---|
|
#18+
Решил проверить известный факт о расположении условий по убыванию вероятности появления(по-моему о нём выше упомянул Марк). В данном коде пробовал менять case 31, но у меня получаются странные результаты. Потому маловероятно что они правдивые. Вечером на ноутбуке проверю. С точки зрения логики я придерживаюсь мнения о том, что есть смысл располагать кейсы в порядке убывания вероятности. Но вероятнее прав окажется Анатолий. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. Владимир2012И так программа в качестве expression должна передавать номер индекса к какому-либо array, содержащему адреса точек перехода для оператора goto. Все! Владимир2012, приведите пожалуйста пример предложенного вами способа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2015, 03:16 |
|
||
|
Аналог switch, но более эффективный
|
|||
|---|---|---|---|
|
#18+
бинарный инкремент в коде выше лучше заменить на унарную операцию ++. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2015, 03:18 |
|
||
|
Аналог switch, но более эффективный
|
|||
|---|---|---|---|
|
#18+
SashaMercuryбинарный инкремент в коде выше лучше заменить на унарную операцию ++. Это еще более смешное утверждение чем тема данного топика ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2015, 03:47 |
|
||
|
Аналог switch, но более эффективный
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskySashaMercuryбинарный инкремент в коде выше лучше заменить на унарную операцию ++. Это еще более смешное утверждение чем тема данного топика Разве Код: plaintext 1. не медленне чем Код: plaintext 1. ? И это не утверждение, а пожелание для минимизации побочного времени ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2015, 03:57 |
|
||
|
Аналог switch, но более эффективный
|
|||
|---|---|---|---|
|
#18+
SashaMercuryРазве Код: plaintext 1. не медленне чем Код: plaintext 1. ? Нет конечно. В стандарте языка (как С так и С++) нет требований, чтобы одно было быстрее другого. Поэтому фактическая скорость зависит от того как компилятор реализует их )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2015, 04:19 |
|
||
|
Аналог switch, но более эффективный
|
|||
|---|---|---|---|
|
#18+
Странно. Совершенно точно помню что мне говорили о том, что унарный оператор выполняется быстрее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2015, 04:23 |
|
||
|
Аналог switch, но более эффективный
|
|||
|---|---|---|---|
|
#18+
Ну да ладно. Это было только предложение и не относится к теме. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2015, 04:23 |
|
||
|
Аналог switch, но более эффективный
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskySashaMercuryРазве Код: plaintext 1. не медленне чем Код: plaintext 1. ? Нет конечно. В стандарте языка (как С так и С++) нет требований, чтобы одно было быстрее другого. Поэтому фактическая скорость зависит от того как компилятор реализует их )) а реализуются они почти наверняка одинаково. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2015, 07:41 |
|
||
|
Аналог switch, но более эффективный
|
|||
|---|---|---|---|
|
#18+
А вообще, да, Анатолий прав, тема смешна до жути. Производительность приложения вообще очень редко определяется скоростью работы одного оператора. Важнее в тысячу раз применяемые алгоритмы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2015, 07:45 |
|
||
|
Аналог switch, но более эффективный
|
|||
|---|---|---|---|
|
#18+
MasterZivAnatoly Moskovskyпропущено... Нет конечно. В стандарте языка (как С так и С++) нет требований, чтобы одно было быстрее другого. Поэтому фактическая скорость зависит от того как компилятор реализует их )) а реализуются они почти наверняка одинаково. В MSVC по разному. Недавно смотрели: ++ компилируется как INC, а +=1 как ADD. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2015, 08:00 |
|
||
|
Аналог switch, но более эффективный
|
|||
|---|---|---|---|
|
#18+
Dima TMasterZivпропущено... а реализуются они почти наверняка одинаково. В MSVC по разному. Недавно смотрели: ++ компилируется как INC, а +=1 как ADD.А как смотрели? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2015, 09:16 |
|
||
|
Аналог switch, но более эффективный
|
|||
|---|---|---|---|
|
#18+
m_SlaDima Tпропущено... В MSVC по разному. Недавно смотрели: ++ компилируется как INC, а +=1 как ADD.А как смотрели? В MSVC отладчике. Брэйкпоинт и потом правая кнопка "Goto disassembly" Вот тот пост 17428235 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2015, 09:26 |
|
||
|
Аналог switch, но более эффективный
|
|||
|---|---|---|---|
|
#18+
Dima Tm_Slaпропущено... А как смотрели? В MSVC отладчике. Брэйкпоинт и потом правая кнопка "Goto disassembly" Вот тот пост 17428235 не сильно я встроенным дизассемблерам доверяю, IDA на exe понадежнее будет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2015, 09:48 |
|
||
|
|

start [/forum/search_topic.php?author=m%27n%27m&author_mode=last_topics&do_search=1]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
70ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
| others: | 492ms |
| total: | 684ms |

| 0 / 0 |
