atwiki-logo
  • 新規作成
    • 新規ページ作成
    • 新規ページ作成(その他)
      • このページをコピーして新規ページ作成
      • このウィキ内の別ページをコピーして新規ページ作成
      • このページの子ページを作成
    • 新規ウィキ作成
  • 編集
    • ページ編集
    • ページ編集(簡易版)
    • ページ名変更
    • メニュー非表示でページ編集
    • ページの閲覧/編集権限変更
    • ページの編集モード変更
    • このページにファイルをアップロード
    • メニューを編集
    • 右メニューを編集
  • バージョン管理
    • 最新版変更点(差分)
    • 編集履歴(バックアップ)
    • アップロードファイル履歴
    • このページの操作履歴
    • このウィキのページ操作履歴
  • ページ一覧
    • ページ一覧
    • このウィキのタグ一覧
    • このウィキのタグ(更新順)
    • このページの全コメント一覧
    • このウィキの全コメント一覧
    • おまかせページ移動
  • RSS
    • このウィキの更新情報RSS
    • このウィキ新着ページRSS
  • ヘルプ
    • ご利用ガイド
    • Wiki初心者向けガイド(基本操作)
    • このウィキの管理者に連絡
    • 運営会社に連絡(不具合、障害など)
ページ検索 メニュー
創造と開発ノート
  • 広告なしオファー
  • ウィキ募集バナー
  • 目安箱バナー
  • 操作ガイド
  • 新規作成
  • 編集する
  • 全ページ一覧
  • 登録/ログイン
広告非表示(β版)
ページ一覧
創造と開発ノート
  • 広告なしオファー
  • ウィキ募集バナー
  • 目安箱バナー
  • 操作ガイド
  • 新規作成
  • 編集する
  • 全ページ一覧
  • 登録/ログイン
ページ一覧
創造と開発ノート
広告非表示 広告非表示(β)版 ページ検索 ページ検索 メニュー メニュー
  • 新規作成
  • 編集する
  • 登録/ログイン
  • 管理メニュー
管理メニュー
  • 新規作成
    • 新規ページ作成
    • 新規ページ作成(その他)
      • このページをコピーして新規ページ作成
      • このウィキ内の別ページをコピーして新規ページ作成
      • このページの子ページを作成
    • 新規ウィキ作成
  • 編集
    • ページ編集
    • ページ編集(簡易版)
    • ページ名変更
    • メニュー非表示でページ編集
    • ページの閲覧/編集権限変更
    • ページの編集モード変更
    • このページにファイルをアップロード
    • メニューを編集
    • 右メニューを編集
  • バージョン管理
    • 最新版変更点(差分)
    • 編集履歴(バックアップ)
    • アップロードファイル履歴
    • このページの操作履歴
    • このウィキのページ操作履歴
  • ページ一覧
    • このウィキの全ページ一覧
    • このウィキのタグ一覧
    • このウィキのタグ一覧(更新順)
    • このページの全コメント一覧
    • このウィキの全コメント一覧
    • おまかせページ移動
  • RSS
    • このwikiの更新情報RSS
    • このwikiの新着ページRSS
  • ヘルプ
    • ご利用ガイド
    • Wiki初心者向けガイド(基本操作)
    • このウィキの管理者に連絡
    • 運営会社に連絡する(不具合、障害など)
  • atwiki
  • 創造と開発ノート
  • JavaTips

創造と開発ノート

JavaTips

最終更新:2006年06月15日 01:38

Bot(ページ名リンク)

- view
管理者のみ編集可

JavaTips

ここではロボットの開発に関係ありそうなJava言語のTipsを紹介しています。

数値演算に関するTips

分数の扱い方

Javaの標準APIでは分数を扱うことはできませんが、Apache JakartaプロジェクトのCommons LangのFractionというクラスを使えば扱えるようになります。
[参考サイト(分数を扱う)|http://www.graco.c.u-tokyo.ac.jp/~haruri/prog/java_misc.xhtml]
[Jakarta Commons Lang|http://jakarta.apache.org/commons/lang/]

スレッドに関するTips

Timerを使おう

Timerクラスを使うとThreadに比べてスレッドの処理がわかりやすくかけるだけでなく厳密な周期処理などきめの細かい制御を行うことができます。

[参考サイト|http://www5.airnet.ne.jp/sakuraba/java/laboratory/utils/Timer/Timer.html]

最適化に関するTips

以下は最適化、つまりプログラムのパフォーマンスを最も高くなるよう改善する方法に関するTipsです。
最適化のテクニックは、使い方によってパフォーマンスは良くなってもソースの可読性が悪くなることがありますので、むやみに使わず適材適所、特にボトルネックに使うことをおすすめします。

数値演算はbyteよりintの方が効率が良い

Javaの場合、整数の操作はint型を使用すると一番効率が良いようにVMが設計されているそうです。
C言語出身者やアセンブラ狂の場合つい演算にbyteを使いたくなりますがそうではないようです。

参考:http://www.asahi-net.or.jp/~dp8t-asm/java/tips/OptUseInt.html

forループの条件は0と比較するようにする

これも上記のサイトの引用ですが、forループ等において終了条件の判定を行う場合、通常良く行うのが以下のようなコーディングです。

 for(int i=0;i<size;i++){...} 

これを増加型ループと呼ぶことにします。
しかし、参照の順番が重要でない場合は下記のように書く方が高速に動作します。
これを上記に対し減少型ループとします。


 for(int i=size;i>0;i--){...} 

[[参考サイト>http://www.asahi-net.or.jp/~dp8t-asm/java/tips/SpeedOptimizationByCoding.html
]]によると後者が約8%高速に動作したようです。
速度の違いは比較部分が0と比較しているか、sizeと比較しているかが大きく関わっているようです。
比較対照が0の場合はバイトコード(アセンブラ)レベルで0比較のコードを採用されるため、1ステップで処理が済みます。ループのような繰り返しの場合全体のパフォーマンスとして性能の違いが見えてくるようです。
しかし、言うまでもなく繰り返しの順番(iが増加するか、減少するか)が重要な処理には使えません。

ちなみに、Tigerから採用された拡張for文では以下のようなコードを使いますが


 Integer array[] = new Integer[100]; 
 ...; 
 for(Integer i : array)System.out.print(i); 

これをJadを使って逆コンパイルすると

 Integer array[] = new Integer[100]; 
 ...; 
 int j=0; 
 for(int k = array.length; j < k; j++){ 
   Integer i = array[j]; 
   System.out.print(i); 
 } 

のように増加型のループになってしまうようです。


参考:http://www.asahi-net.or.jp/~dp8t-asm/java/tips/SpeedOptimizationByCoding.html




リンク


  • じゃばじゃば コーディングレベルの最適化
「JavaTips」をウィキ内検索
LINE
シェア
Tweet
創造と開発ノート
記事メニュー
メニュー
  • トップページ
  • 今日のノート

▼ソフトウェア関係
▽Java
  • JavaTips
  • JavaLibrary
    • JavaCommAPI
    • WindowControl

▽Eclipse
▽QuartzComposer
▽Objective-C

▼ハードウェア
  • マイコン?
  • ロボット?
  • 電子楽器?

▼その他
  • 雑記?
  • 気になったもの?
  • 参考図書?
  • お役立ちサイト
  • リンク?

記事メニュー2

サイト内検索

検索 :

更新履歴

取得中です。
最近更新されたページ
  • 7086日前

    今日のノート/カテゴリ/ロボット
  • 7086日前

    今日のノート/2006年06月15日/i-unit mini
  • 7086日前

    QuartzComposer
  • 7086日前

    今日のノート/2006年06月15日
  • 7086日前

    今日のノート/カテゴリ/QuartzComposer
  • 7086日前

    今日のノート/2006年06月15日/MIAF-LA6日本語版公開
  • 7087日前

    トップページ
  • 7087日前

    Objective-C
  • 7087日前

    メニュー
  • 7087日前

    メニュー2
もっと見る
最近更新されたページ
  • 7086日前

    今日のノート/カテゴリ/ロボット
  • 7086日前

    今日のノート/2006年06月15日/i-unit mini
  • 7086日前

    QuartzComposer
  • 7086日前

    今日のノート/2006年06月15日
  • 7086日前

    今日のノート/カテゴリ/QuartzComposer
  • 7086日前

    今日のノート/2006年06月15日/MIAF-LA6日本語版公開
  • 7087日前

    トップページ
  • 7087日前

    Objective-C
  • 7087日前

    メニュー
  • 7087日前

    メニュー2
もっと見る
ウィキ募集バナー
急上昇Wikiランキング

急上昇中のWikiランキングです。今注目を集めている話題をチェックしてみよう!

  1. 遊戯王DSNTナイトメアトラバドール攻略Wiki@わかな
  2. SDガンダム Gジェネレーションオーバーワールド 攻略Wiki
  3. 20XX @ ウィキ
  4. 役割論理専用wiki 
  5. トリコ総合データベース
  6. モンスター烈伝オレカバトル@wiki
  7. ファイアーエムブレム用語辞典
  8. NIKKEぺでぃあ
  9. 機動戦士ガンダム EXTREME VS. MAXI BOOST ON wiki
  10. ホワイトハッカー研究所
もっと見る
人気Wikiランキング

atwikiでよく見られているWikiのランキングです。新しい情報を発見してみよう!

  1. アニヲタWiki(仮)
  2. MADTOWNGTAまとめwiki
  3. ゲームカタログ@Wiki ~名作からクソゲーまで~
  4. 初音ミク Wiki
  5. ストグラ まとめ @ウィキ
  6. 機動戦士ガンダム バトルオペレーション2攻略Wiki 3rd Season
  7. 検索してはいけない言葉 @ ウィキ
  8. Grand Theft Auto V(グランドセフトオート5)GTA5 & GTAオンライン 情報・攻略wiki
  9. 機動戦士ガンダム EXTREME VS.2 INFINITEBOOST wiki
  10. モンスター烈伝オレカバトル2@wiki
もっと見る
新規Wikiランキング

最近作成されたWikiのアクセスランキングです。見るだけでなく加筆してみよう!

  1. MADTOWNGTAまとめwiki
  2. MadTown GTA (Beta) まとめウィキ
  3. フォートナイト攻略Wiki
  4. 首都圏駅メロwiki
  5. Last Z: Survival Shooter @ ウィキ
  6. まどドラ攻略wiki
  7. 駅のスピーカーwiki
  8. ちいぽけ攻略
  9. ソニックレーシング クロスワールド 攻略@ ウィキ
  10. 魔法少女ノ魔女裁判 攻略・考察Wiki
もっと見る
全体ページランキング

最近アクセスの多かったページランキングです。話題のページを見に行こう!

  1. 【移転】Miss AV 見れない Missav.wsが見れない?!MissAV新URLはどこ?閉鎖・終了してない?missav.ai元気玉って何? - ホワイトハッカー研究所
  2. ブラック・マジシャン・ガール - 遊戯王DSNTナイトメアトラバドール攻略Wiki@わかな
  3. 真崎杏子 - 遊戯王DSNTナイトメアトラバドール攻略Wiki@わかな
  4. ブラック・マジシャン・ガール - アニヲタWiki(仮)
  5. 魔獣トゲイラ - バトルロイヤルR+α ファンフィクション(二次創作など)総合wiki
  6. 参加者一覧 - MADTOWNGTAまとめwiki
  7. 参加者一覧 - ストグラ まとめ @ウィキ
  8. ミッション攻略 - 地球防衛軍6 @ ウィキ
  9. 鬼レンチャン(レベル順) - 鬼レンチャンWiki
  10. リリーバイス - NIKKEぺでぃあ
もっと見る

  • このWikiのTOPへ
  • 全ページ一覧
  • アットウィキTOP
  • 利用規約
  • プライバシーポリシー

2019 AtWiki, Inc.