- ベストアンサー
import 文
import 文では import java.util.* としたり import java.util.ArrayList などのようにクラスごとに指定したりしますが、 この二つの違いとして 大抵の状況で 体感できるほどの速度の差なんてないですよね? つまり、java.util.* としたからと言って、アプリケーションに影響を与えるほど速度が遅くなると言うことはないですよね。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
例えば、ArrayListは、 import java.util.* と書こうが、 import java.util.ArrayList と書こうが、はたまたimportを書かず、いちいちすべてjava.util.ArrayListと書こうが、コンパイルしたクラスファイルの中ではみんなjava.util.ArrayListという形でクラス指定されているわけで、差は何もないと思う。
その他の回答 (2)
- ProKaseifu
- ベストアンサー率51% (98/192)
実行速度は変わらないと思います。 むしろコンパイル時の速度が変わるんじゃないかと。 import java.applet.*; import java.awt.color.*; import java.awt.datatransfer.*; import java.awt.dnd.*; import java.awt.dnd.peer.*; import java.awt.event.*; import java.awt.font.*; import java.awt.font.*; import java.awt.geom.*; import java.awt.im.*; import java.awt.im.spi.*; import java.awt.image.*; import java.awt.image.renderable.*; import java.awt.peer.*; import java.awt.print.*; import java.beans.*; import java.beans.beancontext.*; import java.io.*; import java.util.*; import java.lang.*; と無駄なインポートを多用したものときちんとインポート編成したjavaファイルを用意し、 public static void main(String[] args) throws IOException, InterruptedException { ProcessBuilder pb = new ProcessBuilder("javac", "インポートで*多用.java"); Process p = null; long total = 0; long start = 0; for ( int i = 0 ; i < 100 ; i ++ ){ start = System.currentTimeMillis(); p = pb.start(); p.waitFor(); p.destroy(); total += System.currentTimeMillis() - start; } System.out.println("time:" + total + "ms"); pb = new ProcessBuilder("javac", "インポートで*使わない.java"); total = 0; for ( int i = 0 ; i < 100 ; i ++ ){ start = System.currentTimeMillis(); p = pb.start(); p.waitFor(); p.destroy(); total += System.currentTimeMillis() - start; } System.out.println("time:" + total + "ms"); } 上記のようなコードにて100回コンパイルしたところ合計時間が1割程度変わりました。 大きなプロジェクト等で何千ものjavaファイルをビルドすることを考えるとやはり編成してあったほうがいいような気がします。 また、IDEの設定によっては警告があがって鬱陶しいこともあり、私はインポート編成推奨ですね。
速度の差という点からは違いを感じたことはないです。 いくつかのパターンで実際に測定してみると納得できるかも?