関数のポインタとSwitchの比較です。 実は、if文と関数のポインタの比較ではif文の方が速いですが…  :注1 Switchとの比較では関数のポインタのほうが速いです。 以下にLogを示します。 注1: if(a==100){}else{}の場合である。 if(a==100 && b==100){}else{}のような論理系の方はテストしていない。 //******************************* これから関数のポインタ対Switch文の試合をはじめます。 テスト回数=10,ループ回数=10000000 Switchの速度テストを行います //こんなかんじ switch(dRand(3)){ case 0: a(); break; case 1: b(); break; case 2: c(); break; default: printf("\nERROR\n"); Sleep(5000); } 0回目=2022msec 1回目=2005msec 2回目=2012msec 3回目=2012msec 4回目=2014msec 5回目=2015msec 6回目=2010msec 7回目=2016msec 8回目=2017msec 9回目=2011msec 平均は2013mesc これから関数のポインタのテストを行います //関数のポインタを通して呼び出し void (*tt[])(void)={ a,b,c,NULL }; (*tt[dRand(3)])(); 0回目=1772msec 1回目=1782msec 2回目=1776msec 3回目=1772msec 4回目=1777msec 5回目=1780msec 6回目=1765msec 7回目=1781msec 8回目=1780msec 9回目=1769msec 平均は1775mesc 以上でおわります //*********END*********** さて、見終わりましたか? if文についての資料もお見せします。(執筆中に大急ぎで作った。実装作業40秒) //******************************* これから関数のポインタ対Switch文対IF文の試合をはじめます。 テスト回数=10,ループ回数=10000000 Switchの速度テストを行います switch(dRand(1)){ case 0: a(); break; case 1: b(); break; default: printf("\nERROR\n"); Sleep(5000); } 0回目=1596msec 1回目=1596msec 2回目=1583msec 3回目=1615msec 4回目=1647msec 5回目=1588msec 6回目=1580msec 7回目=1577msec 8回目=1594msec 9回目=1581msec 平均は1595mesc これから関数のポインタのテストを行います //関数のポインタを通して呼び出し void (*tt[])(void)={ a,b,NULL }; (*tt[dRand(1)])(); 0回目=1521msec 1回目=1526msec 2回目=1517msec 3回目=1523msec 4回目=1518msec 5回目=1527msec 6回目=1517msec 7回目=1526msec 8回目=1517msec 9回目=1520msec 平均は1521mesc これからIFのテストを行います if(dRand(1)==true) a(); else b(); 0回目=1528msec 1回目=1517msec 2回目=1525msec 3回目=1520msec 4回目=1525msec 5回目=1520msec 6回目=1525msec 7回目=1518msec 8回目=1524msec 9回目=1518msec 平均は1522mesc 以上でおわります //*********END*********** さて?これからは何がわかりますか? つまり、三つ以上の分岐には関数のポインタを! 2つに分岐は簡単なif文で十分なのです。 (`□´) 以上である!(爆) age (2ch風)