|
|
|
подскажите что почитать про исключения
|
|||
|---|---|---|---|
|
#18+
P.S. Читал, что в плюсах простое появление try-блока автоматически создаёт постоянные накладные расходы. В ява, насколько я понимаю, основная доля этих расходов "перенесена" на сборку мусора. Соответственно, если уж мы миримся (готовы мириться) со сборкой мусора, то протестовать против исключений - глупо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2016, 19:10 |
|
||
|
подскажите что почитать про исключения
|
|||
|---|---|---|---|
|
#18+
Код: java 1. 2. 3. 4. 5. прошу так же освятить тему пропавшего Exception при использовании в конструкции finally и так же вариант решения данной проблемы через Suppressed массив e.getSuppressed() Petro123Atum1, это комилится? можно так : Код: java 1. 2. 3. 4. 5. 6. 7. + куча задач на понимание всего этого + в JDK 7 Suppressed ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2016, 17:33 |
|
||
|
подскажите что почитать про исключения
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2016, 17:36 |
|
||
|
подскажите что почитать про исключения
|
|||
|---|---|---|---|
|
#18+
второй вопрос ка узнать что исключение произошло ? т.е. что мы попали в блок с return 3; ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2016, 17:38 |
|
||
|
подскажите что почитать про исключения
|
|||
|---|---|---|---|
|
#18+
Atum1как получить 3 ? Код: java 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2016, 17:40 |
|
||
|
подскажите что почитать про исключения
|
|||
|---|---|---|---|
|
#18+
Atum1 Код: java 1. 2. 3. Короче, всегда будет 4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2016, 17:45 |
|
||
|
подскажите что почитать про исключения
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovP.S. Читал, что в плюсах простое появление try-блока автоматически создаёт постоянные накладные расходы. В ява, насколько я понимаю, основная доля этих расходов "перенесена" на сборку мусора. Соответственно, если уж мы миримся (готовы мириться) со сборкой мусора, то протестовать против исключений - глупо. Хорошо бы ссылку на источник. Т.к. хоть какие-то накладные расходы в любом случае будут - например будет длиннее байт код При чем сборщик мусора и try-catch, мне вообще не понятно. Выкидывание исключения, явно должно порождать некое торможение. Если какой нибудь цикл миллион раз, то плодить миллион исключений ради "ООПшности" так же глупо, как плодить миллион объектов за зря. И наличие/отсутствие сборщика мусора здесь совершенно не при чем. IMHO & AFAIK ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2016, 19:08 |
|
||
|
подскажите что почитать про исключения
|
|||
|---|---|---|---|
|
#18+
P.S. Сам заинтересовался. Слабал простенький тест на Integer.parseInt. Как не парадоксально (но объяснимо), скорость при наличие блока try..catch даже БЫСТРЕЕ, чем без оного ))) Код: Код: java 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. Результат: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2016, 19:23 |
|
||
|
подскажите что почитать про исключения
|
|||
|---|---|---|---|
|
#18+
Atum1вот пример будет 4 http://ideone.com/kGRaiO как получить 3 ? По БЛ код в finally и exception должен быть разный. Т.е. не один return переменная. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2016, 20:11 |
|
||
|
подскажите что почитать про исключения
|
|||
|---|---|---|---|
|
#18+
Leonid KudryavtsevКак не парадоксально ( но объяснимо ), скорость при наличие блока try..catch даже БЫСТРЕЕ, чем без оного ))) так объясните плиз ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2016, 20:27 |
|
||
|
подскажите что почитать про исключения
|
|||
|---|---|---|---|
|
#18+
Leonid KudryavtsevP.S. Сам заинтересовался. Слабал простенький тест на Integer.parseInt. Как не парадоксально (но объяснимо), скорость при наличие блока try..catch даже БЫСТРЕЕ, чем без оного ))) В 2016м году за тест без использования jmh надо сразу в junior-developer'ы переводить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2016, 21:06 |
|
||
|
подскажите что почитать про исключения
|
|||
|---|---|---|---|
|
#18+
Petro123Atum1вот пример будет 4 http://ideone.com/kGRaiO как получить 3 ? По БЛ код в finally и exception должен быть разный. Т.е. не один return переменная. так и есть 3!=4 :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2016, 08:54 |
|
||
|
подскажите что почитать про исключения
|
|||
|---|---|---|---|
|
#18+
Leonid Kudryavtsev, на моей железке с jMH Код: java 1. 2. 3. 4. 5. 6. Не уверен что точно описал параметры iterations, management, fork, и если кто имеет основания покорректировать - то пускай делает я не буду возражать. Код: java 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2016, 11:52 |
|
||
|
подскажите что почитать про исключения
|
|||
|---|---|---|---|
|
#18+
Alexey TominВ 2016м году за тест без использования jmh надо сразу в junior-developer'ы переводить. Его можно как-то по человечески прицепить к JUnit тестам ? Сам jmh в доке видел, но ни разу не использовал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2016, 11:57 |
|
||
|
подскажите что почитать про исключения
|
|||
|---|---|---|---|
|
#18+
Насколько я понял его можно черег егойный API просто вызвать ну так-же как мы вызываем TestSuite. Код: java 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2016, 12:00 |
|
||
|
подскажите что почитать про исключения
|
|||
|---|---|---|---|
|
#18+
To mayton Код: java 1. 2. 3. 4. 5. 6. Можно по русски. Сколько секунд/микросекунд выполнялась каждая процедура? Score это что такое? На секунды/микросекунды не похоже Отчего такая феерическая разница с "тупым" System.currentTimeMillis() ? Garbage Collector ? Может ли jmh выдавать параллельно статистику по потреблению памяти, т.к. чисто такты без учета замусоривания памяти вроде сильно ни о чем. Приведенный класс-бечмарк из Eclipse by default должен запускаться? Или в Eclipse что-то доставлять/добавлять нужно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2016, 12:12 |
|
||
|
подскажите что почитать про исключения
|
|||
|---|---|---|---|
|
#18+
Leonid Kudryavtsev, по идее ничего в эклипс не надо добавлять. Это просто maven проект. Болванку я создал так Код: java 1. 2. 3. 4. 5. 6. 7. Насчёт разницы сложно что-то сказать. 4 минуты это общее суммарное время работы теста куда вошли эти самые warmup (прогревы) и несколько циклов замеров. По поводу 0,458б, 0,376, 0,422 - да это похоже среднее число милисекунд на каждый метод. У меня ноутбук послабее поэтому цифры другие. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2016, 12:42 |
|
||
|
подскажите что почитать про исключения
|
|||
|---|---|---|---|
|
#18+
Ну и похоже я во втором тесте просто не тот абзац скопи-пастил. Лоханулся немного. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2016, 12:45 |
|
||
|
подскажите что почитать про исключения
|
|||
|---|---|---|---|
|
#18+
Вроде JMH умеет еще и память отслеживать через GC or HS_GC profiler. Будет время, поиграюсь Странная разница. По JMH получилось, что: 1) withoutErrors = 0,376 TryCatchBenchmark.withoutTryCatch = 0,422 Код без обработки ошибок в 0,422 / 0,376 = 1.122 раза МЕДЛЕННЕЕ, чем код с корректной обработкой ошибок. >10% это уже прилично. Через тупой System.getcurrenttimemillis у меня получилось самое большее 1.033 раза медленнее. Тенденция та же (медленнее), но разница почти на порядок меньше. Хотя, возможно, это зависит от версии Java и типа процессора. У меня java version "1.8.0_65" Java(TM) SE Runtime Environment (build 1.8.0_65-b17) Java HotSpot(TM) 64-Bit Server VM (build 25.65-b01, mixed mode) AMD FX-4350 4.2 Gh 2) TryCatchBenchmark.withErrors avgt 15 0,458 ± 0,149 s/op TryCatchBenchmark.withoutErrors avgt 15 0,376 ± 0,088 s/op Код с генерацией ошибки работал в 0,458 / 0,376 = 1.21 раза медленнее, чем код, где все без ошибок. Через тупой System.getcurrenttimemillis 119 823 / 2 607 = 45 !!! раз медленнее. Понятно, что в данную цифру вошли так же затраты на Garbage Collector. Но вот вопрос можно ли "сборку мусора" игнорировать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2016, 13:12 |
|
||
|
подскажите что почитать про исключения
|
|||
|---|---|---|---|
|
#18+
grokLeonid KudryavtsevКак не парадоксально ( но объяснимо ), скорость при наличие блока try..catch даже БЫСТРЕЕ, чем без оного ))) так объясните плиз __предположений__ может быть как грязи. Обработку Exception все равно кому-то делать нужно. Или программисту явно в коде, или JVM. Возможно, что явная обработка обходится дешевле, чем универсальная Если проводить параллели с C-ными setjmp, longjmp. То неявная обработка - это всегда setjmp/longjmp. А если в коде есть явная обработка и JIT компилятор сделал inline для вызываемой ф-ции, то можно exception заменить на банальный goto. чисто предположение. Точно знают только авторы JVM и JIT-компилятора. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2016, 13:18 |
|
||
|
подскажите что почитать про исключения
|
|||
|---|---|---|---|
|
#18+
Leonid KudryavtsevКод с генерацией ошибки работал в 0,458 / 0,376 = 1.21 раза медленнее, чем код, где все без ошибок. Через тупой System.getcurrenttimemillis 119 823 / 2 607 = 45 !!! раз медленнее. Понятно, что в данную цифру вошли так же затраты на Garbage Collector. Но вот вопрос можно ли "сборку мусора" игнорировать. Дальше я пишу свое чортово ИМХО и могу быть с ним не согласен. Я умышленно уменьшил число форков и думаю зря. В эту формулу GC конечно тоже входил но его влияние нужно было распылить по максимуму. Например по 0.1% времени от usertime каждого метода. И думаю не зря там стояло по 10 раз "прогреть машину" и еще 10 раз замерять. Кроме того после у тебя все 3 теста шли в 1 методе. Тоесть JIT компиллятор все одним махом соберет после какого-то executions thresold, а в моем случае каждый тест в своём методе. Кроме того мы не смотрели байткод. А я думаю что это интересно. Что компиллятор оттуда выкинул что добавил. И еще одна ИМХА - в примерах по JMH я обнаружил интересную аннотацию @CompilerControl(CompilerControl.Mode.DONT_INLINE) Надо почитать как она работает. И помедитировать вообще над компиллятором. И еще одна ИМХА - надо почитать про оптимизацию генерации стека exception о которой говорил Блажкович. Возможно важно не количество исключений в цикле а их факт срабатывания хотя-бы 1 раз за цикл. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2016, 15:16 |
|
||
|
подскажите что почитать про исключения
|
|||
|---|---|---|---|
|
#18+
Leonid KudryavtsevХорошо бы ссылку на источник. Т.к. хоть какие-то накладные расходы в любом случае будут - например будет длиннее байт код При чем сборщик мусора и try-catch, мне вообще не понятно.Касательно плюсов - только в бумажном виде (С.Мейерс, два издания "Эффективного C++"). Касательно явы ... Разница в том, что у плюсатых объектов есть деструкторы и компилятор обязан вызывать их когда объект покидает область видимости. Более того, на гарантии этого вызова строятся различные схемы освобождения ресурсов и это поведение никогда не изменится. Т.к. объекты C++ могут существовать на куче, в статической памяти и на стеке, то при раскручивании стека требуется уничтожить всё, что было создано непосильным трудом. Включая и сам объект-исключение, т.к. он тоже создавался на стеке. Но поскольку объект-исключение нужен - компилятор вынужден вставлять код копирования этого объекта. Хотя такое копирование можно оптимизировать в некоторых сценариях, скорости плюсатым исключениям всё это не добавляет. В ява объекты создаются исключительно на куче, деструкторы отсутствуют и компилятору достаточно "таскать" ссылку на объект. Накладные расходы, разумеется, будут, но много меньше.Если какой нибудь цикл миллион раз, то плодить миллион исключений ради "ООПшности"И вам повторю, что если в цикле есть try-блок, то это ещё не означает, что исключение будет возникать при каждой итерации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2016, 19:12 |
|
||
|
подскажите что почитать про исключения
|
|||
|---|---|---|---|
|
#18+
Я к тому, что исключение это все таки механизм для обработки ошибочных ситуаций. Т.е. потенциально их не должно быть много. Часто же они начинают использоваться как некий признак при корректной работе. Например, предположим, что у нас есть последовательность слов и нам нужна проверка: число/не число. IMHO использовать исключения в данном случае, не очень хорошая идея. Вне зависимости от языка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2016, 15:18 |
|
||
|
подскажите что почитать про исключения
|
|||
|---|---|---|---|
|
#18+
Leonid KudryavtsevЯ к тому, что исключение это все таки механизм для обработки ошибочных ситуаций. Т.е. потенциально их не должно быть много. вроде это все знают. Кроме того, отладка не только в логах бывает. Неудобно отлаживать пошагово при исключениях)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2016, 15:48 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=39195734&tid=2124257]: |
0ms |
get settings: |
11ms |
get forum list: |
21ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
143ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
82ms |
get tp. blocked users: |
2ms |
| others: | 261ms |
| total: | 544ms |

| 0 / 0 |
