アーカイブ

‘プログラミング’ カテゴリーのアーカイブ

[Java] StringBuilderとStringBufferの速度差

Riflessi

Javaには、変更可能な文字列を表すクラスとして、StringBuilderとSringBufferの2種類のクラスが存在しています。

StringBuilderは非スレッドセーフ、StringBufferはスレッドセーフ、その分StringBuilderの方がStringBufferより動作速度が速い、という点が二つのクラス間の大きな違いのようです。

いったいどれくらい速いのか、ということについて気になったので、以下のコードを実行して調べてみました。StringBuilderとStringBufferを用いて”Hello, world!”という文字列を100万回結合し、その所要時間を計測しています。

ちなみに、環境はMac OS X 10.6 + JDK5です。

StringBuilder実験用コード

public class StringBuilderTest {
     public static void main(String[] args) {
          StringBuilder sb = new StringBuilder();
          long start = System.currentTimeMillis();
          for (int i = 0; i < 1000000; i++) {
               sb.append("Hello, world!");
          }
          long end = System.currentTimeMillis();

          System.out.println("required time: " + (end - start));
     }
}

StringBuffer実験用コード

public class StringBufferTest {
     public static void main(String[] args) {
          StringBuffer sb = new StringBuffer();
          long start = System.currentTimeMillis();
          for (int i = 0; i < 1000000; i++) {
               sb.append("Hello, world!");
          }
          long end = System.currentTimeMillis();

          System.out.println("required time: " + (end - start));
     }
}

結果

上記のプログラムを10回ずつ実行し、所要時間の平均値を計算したところ、結果は以下のようになりました。

  • StringBuilder:平均132.6 msec
  • StringBuffer:平均170.7 msec

StringBuilderはStringBufferの約78%の時間で処理を完了出来ていることがわかります。

Javaプログラマからすれば常識のようなのですが、上記の結果からもマルチスレッドからの文字列操作を行わない場合は、基本的にStringBuilderを使うのがよい、ということが言えそうです。一つ勉強になりました。

カテゴリー: プログラミング タグ: ,

「休日Webアプリクリエイターズ(仮)」のようなコミュニティを作りたい or 参加したい

2010 年 2 月 11 日 kadoppe コメントはありません

48 hour challenge, second day

このところ、新しいWebアプリのアイデア創出、開発、公開、運営を、本業(仕事 or 学業)とは別にメンバー各人が休日に行えるようなコミュニティがあればいいのに、と考えるようになりました。

僕としては、以下の項目に該当するような人たちが集まっていて、自分が出来る範囲で活動にコミットできるようなゆるい感じのコミュニティをイメージしています。

  • Webアプリのアイデアが持っている、けど一人で作れるかどうか不安。
  • プログラミングがしたい、けど作りたいもののアイデアが特にあるわけではない。
  • オープンソースプロジェクトに参加するのはまだ少し敷居が高く感じる。

それを仕事とするのではなく、あくまで趣味の範囲での活動です。起業とも関係ありません。

Twitter上で色々な方とお話していると、作りたいWebアプリのアイデアがポッと湧き出てくることがあります。そういうアイデアをTwitter上でゆるい感じで知り合った皆さんと協力して具現化できるような枠組みがあれば面白そうだ!とふと思ったのが、今回の件を考え始めたきっかけです。

「ある特定の場所に住んでいる人」のように限定されたコミュニティである必要はないと思っています。たとえ離れていても、必要なミーティングはSkypeなどを用いてビデオでもチャットでも行うことができますし、開発もきっとできるはず?

とまぁ、ものすごく漠然としているのですが、僕が今考えていることはこんな感じです。

もし、すでに同じコンセプトで活動されているコミュニティがあればどうか入れてください。まだ、そういうコンセプトのコミュニティがないのであれば、頑張って作ってみたいと思います。

「そんなコミュニティいらねぇよ」「一緒にやってみたい」「こんなコミュニティがあるよ」など、コメント・ツッコミ等いただけると幸いです。

どうぞ、よろしくお願いいたします。

カテゴリー: プログラミング タグ:

[PHP] 現在のUnixタイムスタンプをマイクロ秒単位で取得する方法

2010 年 2 月 10 日 kadoppe コメントはありません

PHPで現在のUnixタイムスタンプをマイクロ秒単位で取得したい時は、microtime()関数を使うとよいそうです。最初、どうすればよいかわからなかったので一応メモしておきます。

使い方は以下の通り。

$time = microtime(true);
echo $time;    // output: "1265774277.5366"

引数に「true」を渡すことで戻り値がfloat型になります。

引数に何も渡さない場合 、または「false」を渡した場合は、以下のようにマイクロ秒とUnixタイムスタンプをスペースで区切った文字列が出力されるので注意が必要です。

$time = microtime();
echo $time; // output: "0.53658800 1265774277"
カテゴリー: プログラミング タグ: ,

[MacPorts]Mac OS X Snow LeopardにGitをインストール

more-magit-log

MacPortsを使ってMac OS X Snow LeopardにGitをインストールする方法をメモします。

といっても、ターミナルで以下のコマンドを実行するだけ。簡単すぎました。

$ sudo port install git-core

パッケージが「git」ではなくて「git-core」となっているのがつまづきポイントですね!(誰もつまづかないか・・)

カテゴリー: プログラミング タグ: , , , ,