実験

Java で活性エラーが起きたときの x86 アセンブリコードを見てみました。

Effective Java の「項目66 共有された可変データへのアクセスを同期する」で、活性エラー*1について記載があります。 この現象が起こった時の x86 アセンブリコードを見てみました。 なお、アセンブリコードの出力は以下を参考にさせていただきました*2。 J…

Excelマクロ(VBA)の単体テストを書いてみました。

Excelインクリメンタルサーチ を作るにあたって、できるだけ単体テストを書くように心がけています。 ただ、ブラウザの単体テストには Selenium があるのですが、Excelマクロ (VBA, Visual Basic for Applications) には適当なツールがありません。そこで、…

Java6 と Java7 の挙動の違い(バグ?)

Java6 と Java7 で挙動が違ったところがありました。 再現コードは単純で…。 public class Test { public static void main(String[] args) { try { main(args); } catch (Error e) { e.printStackTrace(); } } } 無限再帰するだけのコードです。 最終的には…

java.lang.Object#hashCode()の性質

この前、ふと Object クラスの JavaDoc を見ていたら、こんな記述がありました。 できるかぎり、Object クラスで定義される hashCode メソッドは、異なるオブジェクトについては異なる整数値を返します。 Oracle Technology Network for Java Developers | O…

Javaの実行速度を調べるなら、ClientVM/SeverVM の違いを考慮しておくべきでした。

先日のJava7 で ArrayList の foreach が速くなった理由を調べてみました。 - 地平線に行くについて、お詫びと訂正です。 上記の記事の中で、「ArrayList の foreach文(拡張for文)がJava6 → Java7 で約2.5倍速くなっていました。」という実験結果を記載し…

Java7 で ArrayList の foreach が速くなった理由を調べてみました。

Java7でList/TreeMap/TreeSetのIteratorがかなり早くなって、 ArrayListのforeach文(拡張for文)も、普通のfor文より早くなりました。 コレクションの細かい話、だが面白い! - 谷本 心 in せろ部屋 そうなんですか!? …と思って試してみたところ、ArrayLi…

ウェブサイト1ページ当たりのデータ量は200KB〜、多いと2MBぐらい。

最近、iPhone4S が登場してにわかに回線速度についての話題が上がってきました。 でも、Googleマップのようなリッチコンテンツならともかく、ふつうのウェブページは高速な回線じゃないと困るぐらいデータ量が多いんでしょうか。 調べてみました。 調査方法 …

Javaのクラスの半分以上は、引数なしのコンストラクタを持たない

よく使うJavaのクラスは、たいてい引数なしコンストラクタを持っています。 List<String> list = new ArrayList<String>(); Calendar calendar = new Calendar(); でも、引数なしコンストラクタを持たないクラス*1も結構あります。 InputStream inputStream = new FileInputS</string></string>…

OR条件よりもUNIONの方が速い!

一週間悩んで、やっと分かったのでメモ。 こういうSQLの場合、前者よりも後者の方が速いです。 SELECT * FROM FooTable LEFT OUTER JOIN BarTable1 ON FooTable.ID = BarTable1.ID LEFT OUTER JOIN BarTable2 ON BarTable1.F_ID = BarTable2.ID LEFT OUTER J…

配列 vs ArrayList、速くて軽いのはどっち!?

Javaのソースで、たまに「ArrayListを使っているけど、代入する要素数は決まっている」というのを見かけます。 こういうのを見ると、「要素数が決まっているなら、可変のもの(ArrayList)じゃなくて固定のもの(配列)を使った方が速くてメモリ使用量も少なくて…

Switch文の条件式にenumじゃなくてnullを入れてみた

昨日、ふと思ったんですが・・・。 JavaのSwitch文の条件式には数値型だけでなく、列挙型(enum)も使うことができます。 でも、enumはクラスの一種なので列挙型の変数にはnullも入れられます。 そんなnullが入っている列挙型変数を、Switchの条件式に入れたら…

こんなコマンドがほしい

仕事で使っている開発用サーバが一台壊れました。 壊れたといっても、古いバージョンのOSに新しいアプリを上書きで入れたら動かなくなった・・・というものです。 コマンドは受け付けるけど、開発アプリは動かないという状態。 そんなサーバに対して先輩が言…

引数にnullを渡す、つづき

この前の「引数にnullを渡す」で、独自にメソッド作ってやっていたけど、 もっといい例があった。 System.out.println(null); でOK。 結果は、「コンパイルエラー:あいまいです」。 char[]、Object、Stringなのかがあいまい、ということっぽい。Oracle Tech…

引数にnullを渡す

オーバーロードしたメソッドに対して、引数にnullを渡すとどうなるのかやってみた。 class NullTest{ public void method(String s){ System.out.println("String s:" + s); } public void method(Integer s){ System.out.println("Integer i:" + i); } } pu…