タグ

ブックマーク / qiita.com/shinido (4)

  • Java/AndroidでのノンブロッキングTCP通信(NIO) - Qiita

    JavaでのノンブロッキングIO(NIO)を用いたTCP通信のサンプルです. Java7以降ではNIO2が導入されたのでNIOを用いた実装はほとんど見ないのですが,AndroidではNIO2が導入されていないのでノンブロッキング実装をする場合はNIOを利用するしかありません. いろんなライブラリがあるので実際にTCP通信を実装する人は少ないのかも知れませんが,いざ実装しようとすると意外とちゃんとしたサンプルが落ちていないのでまとめておきます. ソースはGitHubを参照してください. クライアントから受け取ったバイト列をそのままクライアントに返すプログラムになります. 以下,解説します. サーバ側 まずはサーバ側から. 基的な手順は 1.サーバソケットの作成 2.セレクタを利用したイベントの取得 3.Accept処理(ソケットの作成) 4.ソケット毎のRead/Write処理 という流れ

    Java/AndroidでのノンブロッキングTCP通信(NIO) - Qiita
    gfx
    gfx 2016/03/11
  • AndroidとJavaでAtomicIntegerの性能をちゃんと計る - Qiita

    前にやった計り方だとあんまりちゃんと計れていないのでマジメに実装してみた. ついでにAndroidでも計ってみた. 先に結論 synchronizedに比べてAtomicIntegerを使った方がJavaは2倍,Androidは7倍速い. Javaの場合 public class Main { public static void main(String[] args) throws Throwable { int num = 100; double[] syncList = new double[num]; double[] atomicList = new double[num]; for (int i = 0; i < num; i++) { IntTest it = new IntTest(); double sync = test(()->it.testSync()); doub

    AndroidとJavaでAtomicIntegerの性能をちゃんと計る - Qiita
  • AtomicFloatとAtomicDoubleを作ってみた - Qiita

    JavaのAtomicパッケージにはAtomicFloatとかAtomicDoubleが無くて,ドキュメントを見ると また、Float.floatToIntBits や Float.intBitstoFloat 変換を使用して float を保持したり、Double.doubleToLongBits や Double.longBitsToDouble 変換を使用して double を保持したりできます。 ということなので,作ってみた. import java.util.concurrent.atomic.AtomicInteger; public class AtomicFloat { private static final int toI(float f){ return Float.floatToRawIntBits(f); } private static final float

    AtomicFloatとAtomicDoubleを作ってみた - Qiita
  • Mathの高速化を検証する - Qiita

    Mathは当に遅いのか 色の距離(色差)を計算するときにちょっとだけ試してみたので,実際によくある(小手先)高速化手法でMathが速くなるのか検証してみた. 検証方法 JavaAndroidで検証. 単純に実行時間をSystem.nanoTimeで取得し,比較している. 検証順や検証タイミングで最適化がかかったりするので,何回か実行して落ち着いた値で比較している. Javaの検証はIntel Xeon E5 3.5GHzのMac Pro,Androidの検証はQualcomm Snapdragon 800 MSM8974 2.2GHzのSO-02Fで試している. 従来のMathクラスと,実装したDMathクラスで比較した. 10万回実行して1回あたりの実行時間をnano秒で表示している.詳しい方法は一番下を参照. べき乗の高速化 べき乗を計算するMath.pow()は小数のべき乗もサポ

    Mathの高速化を検証する - Qiita
    gfx
    gfx 2016/03/09
  • 1