新しいものを表示

そのドラマ名前とかは知ってるけど見たことはないけど、舞台はカスケード山脈周辺の森林エリアの西側で、結構多くの人がオレゴン州って名前を聞いて想像しそうなエリアかも><

orange さんがブースト

昔一家でオレゴンに移住するドラマありましたね。「オレゴンから愛」っていう。

(西を東って書いちゃってたのなおした><;)

アメリカ人って本当に自己紹介の初手で州の名前言ってくる「Fromオレゴンとか言われてもオレゴンの事全く分からないぞ」「I’m From茨城で対抗しようかな」 - Togetter togetter.com/li/2642412

広さもあれだし文化も違うわけで、もっと言ったらオレゴン州だけでも馬鹿デカいから気候も極端に違ってて、太平洋沿いのグーニーズ&チーズなエリアなのか、ポートランド周辺の都会なのか、ウィラメット・バレーの農業地帯なのか、カスケード山脈周辺の大森林エリア(たぶんここをイメージする人が多い)なのか、南東の全米屈指の超ド田舎砂漠エリアなのか、北東の草原&ポテトエリア(オレアイダの場所)なのか?><;

「オレゴンから来ました」での雑具合、オレゴン州の気候と文化の多様性でいったら、日本に置き換えたら本州から来ました以上の雑さがあると思う><

なんかC#で普通に内部的なエラー処理なんかでも「例外発生させて、それを受け取って・・・」ってやってたけど、標準の例外処理の負荷を考えたらタプルなり専用の型なりでエラー情報を返す方がいいのか・・・><

Geminiに色々聞いたら「Rustが例外方式じゃなくてResult/Option方式なのは、エラー発生時の処理コストの問題も理由なんですよ」(超意訳)って教えてくれてなるほどなった><(?)

世の中の大量のソフトウェアがオーバーフローからのラップアラウンドでバグるの、システム任せでチェックするとこんなに重いならばいちいち何でもかんでもチェックなんてできないだろうしなるほどかも><;

"値の範囲をint32にしちゃって、内部はint64にすれば..."にしたら、オレンジ版の方が大幅に速くなった><;

System.Int32 ver. Elapsed Time: 1790 ms
Subrange ver. Elapsed Time: 217 ms

スレッドを表示

もしかして、C#では(?)、高確率でオーバーフローしまくる可能性がある掛け算をする時に、あらかじめ自前でオーバーフローするかどうかをコードで判断できるなら自前で判断をやってでも例外を発生を避けるほうが高速になる場合がある?><;

なんと、オレンジの元の実装でも、int32でcheckedでオーバーフローを空キャッチするコードよりはちょっと高速らしい・・・><;
オーバーフロー時の処理が重いのか><;

スレッドを表示

値の範囲をint32にしちゃって、内部はint64にすれば、自前の範囲チェックのみで済んでCPU側のラップアラウンドが発生しなくなるからuncheckで計算できて軽くなる・・・?><

スレッドを表示

原因分かった!><;
checkedブロックの中で掛け算するととんでもなく重い><;

スレッドを表示

・・・実はnintのほうは、最適化で中身が空になってたりするのかな?><

スレッドを表示

ちょっといじってみたけど、初期化とかじゃなく、マジでただの掛け算にこの時間のほぼすべてがかかってるっぽい><;

スレッドを表示

かなり前からC#に部分範囲型がない事を嘆く度にわりと馬鹿にされまくってたの、今こそ納得がいかない><

ていうかさっきGeminiにオレンジのアイディアについて聞いたときに、
"""精緻化型(Refinement Types)
Ariane 5の例で出された「部分範囲型」を究極まで突き詰めると、Refinement Types になります。 これは、int などの基本型に $x >= 0 && x < 65536$ のような制約(述語)を付与した型です"""
ってまさにそれが出てきた><

orange さんがブースト

(x: Int :| Positive) + 1 は Int ではあるが Int :| Positive にはならないので、改めてrefineしないとコンパイルエラー、なるほどね。

スレッドを表示
古いものを表示
:realtek:

思考の /dev/null