claw88のブログ

競技プログラミングとかC#とか。

IQ1から脱出する

このネタ記事は
IQが1 Advent Calendar」8日目の記事となっています。(57577)

IQは変動する

IQが変動するというのは共通の認識でしょう。IQも株価などと同様に、短期的な変動と中長期的な変動があると思います。

短期的な変動

IQが上がる例として重要なコンテストなどで結果が求められる時、下がる例としてつまらないことをさせられている時というのがあるでしょう。
脳が今すべきことにいかにリソースを費やせるかでIQが上下します。

中長期的な変動

中期的とは数ヶ月~、長期的とは数年~という視点のものであり、主に環境によって上下します。
無機質なやるだけの生活を送っていればIQは下がっていくのに対し、毎日新しい人やものに触れて創造的な生活を送ればIQは上がります。

IQが1とは

IQの上限値は個体によって異なりますが、IQの下限は1です。年単位でのIQの向上に失敗し、緩やかに傾いてきていたIQにいつしか歯止めが効かなくなり、IQ1まで急落します。
巷ではIQが1だという若人が多く現れ、社会問題となっています。

人類の歴史はIQ向上の歴史

超長期的なビジョンに立てば、親から子あるいは人類全体としてIQの向上に取り組むことが重要です。人は次の世代に知恵を授け、高めたIQを遺伝させていくことで暮らしを豊かにしていきました。

IQ1から脱出する

一度IQ1になってしまうとIQ1から脱出するのは難しいです。IQを少し上げられたところで、またすぐにIQ1に戻ってしまうからです。
では、IQが高い人達にはどのような特徴があるでしょうか、それは「余裕」です。余裕があるから色々なことをすぐ「実験、調査」できるし、試すことが問題解決に直結していきます。そして、将来のことを考えて「投資」ができます。
IQの回復には暇が一番の薬だと私は思っています。

というわけで実験する

ビットシフトが、実際どのくらい速いのか気になったので計測してみました。実行時間の計測にはAtCoderのコードテストを使いました。

class BitShift_suru
{
    static void Main()
    {
        long k = 114514;
        for (int i = 0; i < 2000000000; i++)
        {
            k <<= 1;
        }
    }
}

これが 663ms だったのに対し、

class BitShift_shinai
{
    static void Main()
    {
        long k = 114514;
        for (int i = 0; i < 2000000000; i++)
        {
            k *= 2;
        }
    }
}

これが 1959ms でした。ビットシフトが3倍ぐらい速いと言えそうですね。

C++はクソ速い

上記のコードはC#のものですが、定数倍高速化を考える権利があるのはC++を使う人のみなんですよね。それで、実験しようとしたんですがC++が速すぎて計測を諦めてしまった。。。

まとめ

今日のIQ収支はC#の実験をしたことで+3、C++の実験を諦めたことで-4、合計で-1でした。