{"id":1720178,"user_name":null,"score":1,"text":"Co do wyj\u0105tk\u00f3w i ich kosztu to jest ciekawy off topic.\n\nCo prawda, uwa\u017cam, \u017ce rozwi\u0105zanie jest proste:  wyj\u0105tk\u00f3w w kodzie nie powinno by\u0107, o ile nie s\u0105 wyj\u0105tkowe. Wi\u0119c w kontek\u015bcie wydajno\u015bci troch\u0119 \u015brednio... **ALE**\nCzasami korzystamy z cudzego kodu, kt\u00f3ry u\u017cywa albo deklaruje wyj\u0105tki.. no i zachodzi pytanie jaki to ma wp\u0142yw?\nZ mojego do\u015bwiadczenia to nowoczesne JVM \u0142adnie eliminuj\u0105 wp\u0142yw wszystkich tych nierzucanych wyj\u0105tk\u00f3w, ale oczywi\u015bcie wszystkiego nie widzia\u0142em.\nDla rozpocz\u0119cia dyskusji daj\u0119 taki przyk\u0142ad:\n```\nobject TryCost {\n\n    fun trivialSum(a: Long, b: Long) =\n        (a..b).sum().let {\n            if ( it > 200000000) {\n                -1\n            } else {\n                it\n            }\n        }\n\n    fun tryCatchSum(a: Long, b: Long) =\n        (a..b).sum().let {\n            try {\n                if ( it > 200000000) {\n                    throw Exception(\"should not happen\")\n                } else {\n                    it\n                }\n            } finally{\n\n            }\n\n        }\n}\n\n```\nA tu test - tak u\u0142o\u017cony, \u017ceby wyj\u0105tek nie lecia\u0142.\nhttps:\/\/github.com\/jarekratajski\/benchmarkiPochwarki\/blob\/main\/src\/jmh\/java\/jmh\/TryTest.java\n\nU mnie r\u00f3\u017cnic w czasach nie  ma. Ale pewnie (prawie na pewno) da si\u0119 ten przyk\u0142ad tak przerobi\u0107, \u017ce kompilator w jvm si\u0119 pogubi. Pytanie.. jak w najprostszy spos\u00f3b to zrobi\u0107: czyli deklarujemy wyj\u0105tek, kt\u00f3ry nie leci, ale pogr\u0105\u017camy wydajno\u015b\u0107 (wzgl\u0119dem to\u017csamego kodu, kt\u00f3ry tego wyj\u0105tku nie deklaruje).","edit_count":5,"is_voted":null,"is_accepted":null,"is_subscribed":null,"user_id":78878,"deleter_name":null,"delete_reason":null,"orderingScore":1,"created_at":"2020-11-02T10:45:47+01:00","updated_at":"2020-11-02T15:32:42+01:00","deleted_at":null,"user":{"id":78878,"name":"jarekr000000","is_online":false,"bio":"Zgadzam si\u0119 ze wszystkimi przedm\u00f3wcami","location":"U krasnolud\u00f3w - pod g\u00f3r\u0105","allow_sig":1,"allow_count":1,"allow_smilies":1,"posts":4730,"visited_at":"2026-07-10T04:40:11.000000Z","created_at":"2016-09-15T21:38:28.000000Z","initials":"J0","is_verified":false,"is_deleted":false,"is_incognito":false,"is_blocked":false,"is_blocked_perm":false,"deleted_at":null,"photo":"\/uploads\/photo\/ggwraKmclN3ZY0QlPKdtjGBOBOZVZJKgtoPWSDuz.jpg","sig":"jeden i p\u00f3\u0142 terabajta powinno wystarczy\u0107 ka\u017cdemu\n"},"html":"<p>Co do wyj\u0105tk\u00f3w i ich kosztu to jest ciekawy off topic.<\/p>\n<p>Co prawda, uwa\u017cam, \u017ce rozwi\u0105zanie jest proste:  wyj\u0105tk\u00f3w w kodzie nie powinno by\u0107, o ile nie s\u0105 wyj\u0105tkowe. Wi\u0119c w kontek\u015bcie wydajno\u015bci troch\u0119 \u015brednio... <strong>ALE<\/strong><br \/>\nCzasami korzystamy z cudzego kodu, kt\u00f3ry u\u017cywa albo deklaruje wyj\u0105tki.. no i zachodzi pytanie jaki to ma wp\u0142yw?<br \/>\nZ mojego do\u015bwiadczenia to nowoczesne JVM \u0142adnie eliminuj\u0105 wp\u0142yw wszystkich tych nierzucanych wyj\u0105tk\u00f3w, ale oczywi\u015bcie wszystkiego nie widzia\u0142em.<br \/>\nDla rozpocz\u0119cia dyskusji daj\u0119 taki przyk\u0142ad:<\/p>\n<div class=\"markdown-code\"><div class=\"copy-button\">Kopiuj<\/div><pre><code>object TryCost {\n\n    fun trivialSum(a: Long, b: Long) =\n        (a..b).sum().let {\n            if ( it &gt; 200000000) {\n                -1\n            } else {\n                it\n            }\n        }\n\n    fun tryCatchSum(a: Long, b: Long) =\n        (a..b).sum().let {\n            try {\n                if ( it &gt; 200000000) {\n                    throw Exception(\"should not happen\")\n                } else {\n                    it\n                }\n            } finally{\n\n            }\n\n        }\n}\n\n<\/code><\/pre><\/div>\n<p>A tu test - tak u\u0142o\u017cony, \u017ceby wyj\u0105tek nie lecia\u0142.<br \/>\n<a href=\"https:\/\/github.com\/jarekratajski\/benchmarkiPochwarki\/blob\/main\/src\/jmh\/java\/jmh\/TryTest.java\" rel=\"nofollow\" target=\"_blank\">https:\/\/github.com\/jarekratajski\/benchmarkiPochwarki\/blob\/main\/src\/jmh\/java\/jmh\/TryTest.java<\/a><\/p>\n<p>U mnie r\u00f3\u017cnic w czasach nie  ma. Ale pewnie (prawie na pewno) da si\u0119 ten przyk\u0142ad tak przerobi\u0107, \u017ce kompilator w jvm si\u0119 pogubi. Pytanie.. jak w najprostszy spos\u00f3b to zrobi\u0107: czyli deklarujemy wyj\u0105tek, kt\u00f3ry nie leci, ale pogr\u0105\u017camy wydajno\u015b\u0107 (wzgl\u0119dem to\u017csamego kodu, kt\u00f3ry tego wyj\u0105tku nie deklaruje).<\/p>\n","url":"http:\/\/static.175.128.202.116.clients.your-server.de\/Forum\/Inzynieria_oprogramowania\/345560-kiedy_gruboziarnisty_kod_jest_lepszy?p=1720178#id1720178","is_locked":false,"editor":{"id":78878,"name":"jarekr000000","is_online":false,"bio":"Zgadzam si\u0119 ze wszystkimi przedm\u00f3wcami","location":"U krasnolud\u00f3w - pod g\u00f3r\u0105","allow_sig":1,"allow_count":1,"allow_smilies":1,"posts":4730,"visited_at":"2026-07-10T04:40:11.000000Z","created_at":"2016-09-15T21:38:28.000000Z","initials":"J0","is_verified":false,"is_deleted":false,"is_incognito":false,"is_blocked":false,"is_blocked_perm":false,"deleted_at":null,"photo":"\/uploads\/photo\/ggwraKmclN3ZY0QlPKdtjGBOBOZVZJKgtoPWSDuz.jpg","sig":"jeden i p\u00f3\u0142 terabajta powinno wystarczy\u0107 ka\u017cdemu\n"},"permissions":{"write":false,"delete":false,"update":false,"accept":false},"moderatorPermissions":{"delete":false,"update":false,"accept":false,"merge":false,"sticky":false,"admAccess":false},"comments":{"647977":{"id":647977,"text":"abstrakcyjnych przekszta\u0142ce\u0144 to dla mnie jednak zbyt drogie zaj\u0119cie :-( Troch\u0119\u00a0zazdrosz\u0119 wam tego na etacie :-)","html":"abstrakcyjnych przekszta\u0142ce\u0144 to dla mnie jednak zbyt drogie zaj\u0119cie :-( Troch\u0119\u00a0zazdrosz\u0119 wam tego na etacie :-)\n","post_id":1720178,"created_at":"2020-11-02T16:25:27+01:00","updated_at":"2020-11-02T16:26:35+01:00","user":{"id":109505,"name":"pan_krewetek","is_online":false,"initials":"PK","is_verified":null,"is_deleted":true,"is_incognito":false,"is_blocked":false,"is_blocked_perm":false,"deleted_at":"2021-07-11T16:57:47.000000Z","photo":null},"url":"\/Forum\/Inzynieria_oprogramowania\/345560-kiedy_gruboziarnisty_kod_jest_lepszy?p=1720178#comment-647977","metadata":"eyJpdiI6IlJmQlFWdTZpNWRmdmxNYjJSQUFhYVE9PSIsInZhbHVlIjoiQlYvM0NMcHVwYW5iNXUxVGw3N0ZSVGljTTlmNmRQc0dBeGszNExlS0xuL1lSSHpVbE1UcXNua0NnN1ZqcytzVWhlMzg4ZmladkJmanVPSWZ3bEQ5cmxFUDBWWmRST3M3eHVmNjMyU0lmZTRXeE5hTmY1SktyLzJwN1hlT2NockRxbnJFVEh2R2ptZXhDclJXUG9GSTNzZlROWDJqWnhvUVU1Umhrc0tmZFBjPSIsIm1hYyI6IjU3MjZhZDgxZGQ2NmE5Zjc5MWJiYzA2ZmRhZTMxNjZhYjAwYTMxMTg0ZTRhYzI1MWRhNmQwZTgzYTE2ZGU1MmEiLCJ0YWciOiIifQ==","votes":0,"ownVote":false,"voters":[]},"647979":{"id":647979,"text":"`produkowanie sygnaturek do coraz bardziej abstrakcyjnych przekszta\u0142ce\u0144 to dla mnie zbyt drogie zaj\u0119cie` - nie do konca chyba rozumiem co masz na mysli? O inferencji typow slyszales?","html":"<code>produkowanie sygnaturek do coraz bardziej abstrakcyjnych przekszta\u0142ce\u0144 to dla mnie zbyt drogie zaj\u0119cie<\/code> - nie do konca chyba rozumiem co masz na mysli? O inferencji typow slyszales?\n","post_id":1720178,"created_at":"2020-11-02T16:27:07+01:00","updated_at":"2020-11-02T16:29:53+01:00","user":{"id":79030,"name":"stivens","is_online":false,"initials":"ST","is_verified":null,"is_deleted":true,"is_incognito":false,"is_blocked":false,"is_blocked_perm":false,"deleted_at":"2025-06-21T15:51:46.000000Z","photo":"\/uploads\/photo\/5b\/5b42791b9d2a8.png"},"url":"\/Forum\/Inzynieria_oprogramowania\/345560-kiedy_gruboziarnisty_kod_jest_lepszy?p=1720178#comment-647979","metadata":"eyJpdiI6InArMEZLT0s3THNNaElqWVArQXVUbUE9PSIsInZhbHVlIjoiaDhBZVY4OHFuOVRJTy9iSnZWbjJRVnZSdkVZQy8vc2FYT05KcEFaeDV3NG1oUlJUVCtlcmVKakJtc1djTkN6VHhPUWZTdmhoVzR2NWZpamp2UU1yYUZNQkRJSGFEN1NZNHJvMGd1RnJBcnN4bDhhRGZPcjRIWlBhWW1JZWVObGxsWEljZmM1VFBxMG02b0g3dFMraWpCN0dmWkoxMFVvUWIya3ExVWdyYzdnPSIsIm1hYyI6IjE0YTZlMWRiZTIwYmRkY2Q2YWU1OTY4MjMxZDQ4ZDM2NTQ3NzE3NTI4NWUwMDdmOTI4MWYzZWUyZmRhYTRjMzUiLCJ0YWciOiIifQ==","votes":0,"ownVote":false,"voters":[]},"647980":{"id":647980,"text":"@stivens:  pewwnie co\u015b w stylu `|>` jest w Scalaz i pewnie ma jaki\u015b w\u0142asny znaczek unicode, kt\u00f3ry doprowadza\u0142 mnie do sza\u0142u...","html":"@stivens:  pewwnie co\u015b w stylu <code>|&gt;<\/code> jest w Scalaz i pewnie ma jaki\u015b w\u0142asny znaczek unicode, kt\u00f3ry doprowadza\u0142 mnie do sza\u0142u...\n","post_id":1720178,"created_at":"2020-11-02T16:27:52+01:00","updated_at":"2020-11-02T16:27:52+01:00","user":{"id":78878,"name":"jarekr000000","is_online":false,"initials":"J0","is_verified":null,"is_deleted":false,"is_incognito":false,"is_blocked":false,"is_blocked_perm":false,"deleted_at":null,"photo":"\/uploads\/photo\/ggwraKmclN3ZY0QlPKdtjGBOBOZVZJKgtoPWSDuz.jpg"},"url":"\/Forum\/Inzynieria_oprogramowania\/345560-kiedy_gruboziarnisty_kod_jest_lepszy?p=1720178#comment-647980","metadata":"eyJpdiI6Ikk2amltVWovUVVHeHFOVTVQcWIzWUE9PSIsInZhbHVlIjoibXIySk45ejJFVW5DQUVhdUNuWjFFNlpDTWdjRklieHVIOGRPQml4bXhGNDdtR0Z3dWovOXJDT09GMnAxZ1pocVAwYzRYUzFHR1gxQ3Ard3lZRWoycXZEeDNhVVUzZHkvL2wxblpOL1o2KytXU1I2dHVsVHBtOUhvUDVXVy81Y1ZZRU1BNUI2bHRHSXN6Mko3RkNNVmluVitESDcxbFpaRllWZWx0NGRxQ2hVPSIsIm1hYyI6IjY4ZjNjZTljYzk1NmJkZGJmNWFiYTEyM2ExNmM2MTBlODk1NWNlMmQyNzE5NzQ1YzUyMDhkZWFlMWU1ZWUwMTQiLCJ0YWciOiIifQ==","votes":0,"ownVote":false,"voters":[]},"647982":{"id":647982,"text":"@stivens:  on my\u015bli, \u017ce me te sygnatury typ\u00f3w piszemy :-), ale prawda jest taka, \u017ce w Scali czasem trzeba, w kotlinie te\u017c. Mam nadziej\u0119, \u017ce b\u0119d\u0119 mia\u0142 jaki\u015b niewa\u017cny projekt na potestowanie Scali 3...","html":"@stivens:  on my\u015bli, \u017ce me te sygnatury typ\u00f3w piszemy :-), ale prawda jest taka, \u017ce w Scali czasem trzeba, w kotlinie te\u017c. Mam nadziej\u0119, \u017ce b\u0119d\u0119 mia\u0142 jaki\u015b niewa\u017cny projekt na potestowanie Scali 3...\n","post_id":1720178,"created_at":"2020-11-02T16:31:25+01:00","updated_at":"2020-11-02T16:31:25+01:00","user":{"id":78878,"name":"jarekr000000","is_online":false,"initials":"J0","is_verified":null,"is_deleted":false,"is_incognito":false,"is_blocked":false,"is_blocked_perm":false,"deleted_at":null,"photo":"\/uploads\/photo\/ggwraKmclN3ZY0QlPKdtjGBOBOZVZJKgtoPWSDuz.jpg"},"url":"\/Forum\/Inzynieria_oprogramowania\/345560-kiedy_gruboziarnisty_kod_jest_lepszy?p=1720178#comment-647982","metadata":"eyJpdiI6Ijd3QURsZm5ab2ZDNXM3OXFURzhBTVE9PSIsInZhbHVlIjoiWkRQTVVoVUVValdGYnZnei9CY1dyRmFCQkxIMlNPYW10ajZTWmRyeGlHREdhVHBvdW10RThjWkQvZnpDemFqOWtBcklQQXdjd2xDUzFZRGg0My9CQTQrQlZwTzlSNjZyTFNPQ3N1OEltb1BneWYzU0RwSVRuNzlMdndLOUFVYWVZdlpKYWI5K0VmQkFDR3VRM2kxUkxxZVVaN0pUTW54dWsrVS9GeC81cHVrPSIsIm1hYyI6IjVjMDU2YTNjMjg0YzE2NTFjM2JmYjk3OWE3NWM1OThhMjg2M2U4NjYxMmNlZDA3Y2MyN2FmOTM4ZTgzYTQ5ODIiLCJ0YWciOiIifQ==","votes":0,"ownVote":false,"voters":[]},"647983":{"id":647983,"text":"@stivens w zasadzie nic specjalnego. Og\u00f3lnie samo pisanie wyra\u017ce\u0144, o ile j\u0119zyk dostarcza ku temu \u015brodki idzie sprawnie i spoko, co z reszt\u0105 w tym przyk\u0142adzie wida\u0107, ale ci\u0119\u017car pisania kodu wtedy przychyla si\u0119 do tych \u015brodk\u00f3w z kt\u00f3rych zbudowane s\u0105 przej\u015bcia 1) na og\u00f3l jakie\u015b generyki 2) lub implementowanie dodatkowych przekszta\u0142ce\u0144 per typ.","html":"@stivens w zasadzie nic specjalnego. Og\u00f3lnie samo pisanie wyra\u017ce\u0144, o ile j\u0119zyk dostarcza ku temu \u015brodki idzie sprawnie i spoko, co z reszt\u0105 w tym przyk\u0142adzie wida\u0107, ale ci\u0119\u017car pisania kodu wtedy przychyla si\u0119 do tych \u015brodk\u00f3w z kt\u00f3rych zbudowane s\u0105 przej\u015bcia 1) na og\u00f3l jakie\u015b generyki 2) lub implementowanie dodatkowych przekszta\u0142ce\u0144 per typ.\n","post_id":1720178,"created_at":"2020-11-02T16:31:53+01:00","updated_at":"2020-11-02T16:31:53+01:00","user":{"id":109505,"name":"pan_krewetek","is_online":false,"initials":"PK","is_verified":null,"is_deleted":true,"is_incognito":false,"is_blocked":false,"is_blocked_perm":false,"deleted_at":"2021-07-11T16:57:47.000000Z","photo":null},"url":"\/Forum\/Inzynieria_oprogramowania\/345560-kiedy_gruboziarnisty_kod_jest_lepszy?p=1720178#comment-647983","metadata":"eyJpdiI6Ik5DdFZoNnFOUVBJSXVWM1I3M0QySnc9PSIsInZhbHVlIjoiYmdnNE40cGlZUWh1QlVKc1FnRHpIVTVsUTF2ODFWcm1sNXJYd3d2Qksxdlo4SkRGQXRMdmF1L3B6U2VvMEFaZFhFSTBWTG9rb1hCck9WL1pTMFk3RENnVXZlZFZRa0kwTklKSi9HVHRLN2lpUlBGNHZNZUFwNDB0ZUtXSTdqZWFmWXF2OXc5RkZ3clFxczl1bXJHSTRJWkdxbXNrV1ptYkRwU25ZVVZNWVhBPSIsIm1hYyI6IjhiYjRjMzA3ZGQwMjdiMDEyZDNiNDgxMDQ3OWFlYzkxOTY5Y2NjNmNiMWJmZDM0YWExMjk4ODU0MGEyN2ViNGYiLCJ0YWciOiIifQ==","votes":0,"ownVote":false,"voters":[]}},"comments_count":17,"assets":[],"metadata":"eyJpdiI6IkNpa1ZFOVgzd0hKVGFINngyOFBPbkE9PSIsInZhbHVlIjoiL2E0UkxvN1NaSGFzQStHdmJ2d2JhaEs2Z2FoVmdyeFFWRFRvRlpLV2szM1NXRjJqRjVwVVNjT1JwYjNXM3hhVmVQZmZ3YVp1enFiZTlJY0EvUXlSRU5DbnZSZDZhWnZjT2tsM214c2dUNnp2eVgzcWlnbG0xaDI1czg4czdaNzEiLCJtYWMiOiI1NjUwZmZmOWE3MDBkMGEzZTA2NzhkYjEzYTI0YTRiY2ZlZDI4MWVlMDk4NTlmM2VkMmYwNTQ2YmEzMDIwNGVmIiwidGFnIjoiIn0=","has_review":false,"review_style":"info","parentPostId":null,"childrenFolded":false,"type":"regular","highlighted":false}