最近、初心に帰ってJavaの本を読んでますです。
さてさてJavaのswitch文説明を読み返していて思い出したこと。
わたくし、ファームウェア開発出身者です。
C言語+アセンブラでの開発です。
なぜかswitch文に抵抗があります。
私がやっていたファームウェア開発では
switch文なんか使うと白い目で見られたものです。
(この話はうろ覚え、かつ、今ググって裏がとれなかったので注意)
switch文が嫌われていた理由。
それは処理速度。
if文で書いたほうが速いという。
それはアセンブラになったときアドレスの
「絶対参照」と「相対参照」の違いが出るため。
if文は「相対参照」
switch文は「絶対参照」
になる。
(これは当然コンパイラや対象チップによるので注意)
相対参照の命令コードと絶対参照の命令コードでは
相対参照のほうが早く処理できる。
命令コードが絶対参照より相対参照のほうが少なくすむため。
参考例:
http://wob-site.com/tech/dem/instruction_set/branch_jump/
1Byteのコードの差だが超短時間で繰り返し処理が必要な仕様の
ファームウェアにとっては重要。
if文でバカみたいにずらずら書いたほうが
相対参照のジャンプ命令にしてくれて速い。
。。。ほんとか?
書いていて疑問に思っていろいろ調べたが
この記憶、怪しいね。
「if文は相対参照、switch文は絶対参照」とか
命令コードの大きさの差で処理速度が変動とか。
まあ、androidの開発でJavaを使ってアプリ作る分には
なんらswitch文を使うのに問題はないでしょう。
0 件のコメント:
コメントを投稿