by
Anonymous Coward
on 2022年01月14日 16時37分
(#4184809)
測ってきました C#ね
for (int i = 0; i < 1000000; ++i) { int x = 1 << 1; }
84ミリ秒
for (int i = 0; i < 1000000; ++i) { bool x = Regex.IsMatch("hage", ".*"); }
432ミリ秒
さすがにシフトのが正規表現よりは早いけど、#4184059みたいに感覚がないとか怒るほどのこっちゃないな。 現実のプログラムではもっと遅い原因が別にあると思うよ。
案外 (スコア:0)
昔からある「高級言語」「低級言語」の認識ズレのジョークやね。
でも、コンピューターサイエンス的な意味での低レベル言語から教えていくというのもありなんではないかと。
コンピューターって底の方ではこういう風に動いてるんだよ、という知識が付くと、
なにかとIT周りで勘が働くようにならないだろうか。
Re: (スコア:0)
なまじ高水準言語から入った人だと、字面しか見てなくて
たまにその印象だけで語るから変なことを言う人もいる。
たとえばパフォーマンスまわりなんかだと、その傾向が強い。
「ビットシフトはCPUの一命令だから早いけど、
正規表現は複雑な処理が必要だから遅い。」
みたいな感覚がまったくないんだ。
ただし小学生にそこまで求める必用派なさそう。
あくまで職業プログラマの話として。
Re: (スコア:0)
理論は二の次、まずは計測だ!
Re:案外 (スコア:0)
C#ね
for (int i = 0; i < 1000000; ++i) { int x = 1 << 1; }
84ミリ秒
for (int i = 0; i < 1000000; ++i) { bool x = Regex.IsMatch("hage", ".*"); }
432ミリ秒
さすがにシフトのが正規表現よりは早いけど、#4184059みたいに感覚がないとか怒るほどのこっちゃないな。
現実のプログラムではもっと遅い原因が別にあると思うよ。