2011-07-28 7 views
8

私はScala 2.9.0.finalをUbuntu 11.04で使用しています。コマンドラインからスカラーを開始すると約20秒かかり、プロンプトが表示されます。スタートアップにREPL〜20secsのスキャラ - これは正常ですか?

コンパイラのJARファイルをリードする必要があるため、いくらか遅延が予想されることがわかりましたが、20秒でなければならないと苦労しています。

EDIT

だから私はjstackを試してみました、それは私の頭の上にある長い出力を提供します。ミューテックスを待っているスレッドが1つ見えます。しかしtimeからの出力を見て:

21.96s user 0.66s system 135% cpu 16.711 total 

ので、多分それはちょうどその時のために、ミューテックスでブロックしていないです...両方のコア上のサイクルのまともな金額を費やしたように見えるでしょうか?

2011-07-28 11:45:02 
Full thread dump OpenJDK 64-Bit Server VM (20.0-b11 mixed mode): 

"Attach Listener" daemon prio=10 tid=0x00000000023ea000 nid=0x19a9 waiting on condition [0x0000000000000000] 
    java.lang.Thread.State: RUNNABLE 

"Thread-0" prio=10 tid=0x00007f7768304800 nid=0x19a8 runnable [0x00007f776cd92000] 
    java.lang.Thread.State: RUNNABLE 
    at scala.collection.generic.Growable$$anonfun$$plus$plus$eq$1.<init>(Growable.scala:48) 
    at scala.collection.generic.Growable$class.$plus$plus$eq(Growable.scala:48) 
    at scala.collection.mutable.ListBuffer.$plus$plus$eq(ListBuffer.scala:128) 
    at scala.collection.TraversableOnce$class.toList(TraversableOnce.scala:242) 
    at scala.collection.mutable.WrappedArray.toList(WrappedArray.scala:33) 
    at scala.collection.immutable.List$.apply(List.scala:434) 
    at scala.Option.toList(Option.scala:231) 
    at scala.tools.nsc.util.DirectoryClassPath.asURLs(ClassPath.scala:321) 
    at scala.tools.nsc.util.ClassPath.sortString(ClassPath.scala:284) 
    at scala.tools.nsc.util.ClassPath.hashCode(ClassPath.scala:289) 
    at scala.collection.mutable.FlatHashTable$HashUtils$class.elemHashCode(FlatHashTable.scala:349) 
    at scala.collection.mutable.HashSet.elemHashCode(HashSet.scala:39) 
    at scala.collection.mutable.FlatHashTable$class.containsEntry(FlatHashTable.scala:109) 
    at scala.collection.mutable.HashSet.containsEntry(HashSet.scala:39) 
    at scala.collection.mutable.HashSet.contains(HashSet.scala:55) 
    at scala.collection.GenSetLike$class.apply(GenSetLike.scala:44) 
    at scala.collection.mutable.HashSet.apply(HashSet.scala:39) 
    at scala.collection.SeqLike$$anonfun$distinct$1.apply(SeqLike.scala:505) 
    at scala.collection.LinearSeqOptimized$class.foreach(LinearSeqOptimized.scala:59) 
    at scala.collection.immutable.List.foreach(List.scala:45) 
    at scala.collection.SeqLike$class.distinct(SeqLike.scala:504) 
    at scala.collection.immutable.List.distinct(List.scala:45) 
    at scala.tools.util.PathResolver$Calculated$.containers(PathResolver.scala:206) 
    - locked <0x00000000faba8098> (a scala.tools.util.PathResolver$Calculated$) 
    at scala.tools.util.PathResolver.containers(PathResolver.scala:228) 
    at scala.tools.util.PathResolver.result(PathResolver.scala:231) 
    - locked <0x00000000faba8050> (a scala.tools.util.PathResolver) 
    at scala.tools.nsc.backend.JavaPlatform$class.classPath(JavaPlatform.scala:18) 
    at scala.tools.nsc.Global$$anon$2.classPath(Global.scala:54) 
    - locked <0x00000000faba7ff0> (a scala.tools.nsc.Global$$anon$2) 
    at scala.tools.nsc.backend.JavaPlatform$class.rootLoader(JavaPlatform.scala:19) 
    at scala.tools.nsc.Global$$anon$2.rootLoader(Global.scala:54) 
    at scala.tools.nsc.Global$$anon$2.rootLoader(Global.scala:54) 
    at scala.tools.nsc.Global.rootLoader(Global.scala:57) 
    at scala.tools.nsc.symtab.Definitions$definitions$.RootClass(Definitions.scala:138) 
    - locked <0x00000000faba5620> (a scala.tools.nsc.symtab.Definitions$definitions$) 
    at scala.tools.nsc.symtab.Definitions$definitions$.EmptyPackage(Definitions.scala:141) 
    - locked <0x00000000faba5620> (a scala.tools.nsc.symtab.Definitions$definitions$) 
    at scala.tools.nsc.symtab.Definitions$definitions$.EmptyPackageClass(Definitions.scala:142) 
    - locked <0x00000000faba5620> (a scala.tools.nsc.symtab.Definitions$definitions$) 
    at scala.tools.nsc.symtab.Definitions$definitions$.init(Definitions.scala:804) 
    at scala.tools.nsc.Global$Run.<init>(Global.scala:693) 
    at scala.tools.nsc.interpreter.IMain.scala$tools$nsc$interpreter$IMain$$_initialize(IMain.scala:120) 
    at scala.tools.nsc.interpreter.IMain$$anonfun$initialize$1.apply$mcZ$sp(IMain.scala:154) 
    at scala.tools.nsc.interpreter.IMain$$anonfun$initialize$2.apply(IMain.scala:154) 
    at scala.tools.nsc.interpreter.IMain$$anonfun$initialize$2.apply(IMain.scala:154) 
    at scala.concurrent.ThreadRunner$$anon$2$$anonfun$run$2.apply(ThreadRunner.scala:45) 
    at scala.concurrent.ThreadRunner.scala$concurrent$ThreadRunner$$tryCatch(ThreadRunner.scala:31) 
    at scala.concurrent.ThreadRunner$$anon$2.run(ThreadRunner.scala:45) 
    at java.lang.Thread.run(Thread.java:679) 

"Low Memory Detector" daemon prio=10 tid=0x00007f77680b9000 nid=0x1996 runnable [0x0000000000000000] 
    java.lang.Thread.State: RUNNABLE 

"C2 CompilerThread1" daemon prio=10 tid=0x00007f77680b6800 nid=0x1995 runnable [0x0000000000000000] 
    java.lang.Thread.State: RUNNABLE 

"C2 CompilerThread0" daemon prio=10 tid=0x00007f77680b3800 nid=0x1994 runnable [0x0000000000000000] 
    java.lang.Thread.State: RUNNABLE 

"Signal Dispatcher" daemon prio=10 tid=0x00007f77680b2000 nid=0x1993 runnable [0x0000000000000000] 
    java.lang.Thread.State: RUNNABLE 

"Finalizer" daemon prio=10 tid=0x00007f7768092800 nid=0x1992 in Object.wait() [0x00007f776e27c000] 
    java.lang.Thread.State: WAITING (on object monitor) 
    at java.lang.Object.wait(Native Method) 
    - waiting on <0x00000000fb2d82d0> (a java.lang.ref.ReferenceQueue$Lock) 
    at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:133) 
    - locked <0x00000000fb2d82d0> (a java.lang.ref.ReferenceQueue$Lock) 
    at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:149) 
    at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:177) 

"Reference Handler" daemon prio=10 tid=0x00007f7768091000 nid=0x1991 in Object.wait() [0x00007f776e37d000] 
    java.lang.Thread.State: WAITING (on object monitor) 
    at java.lang.Object.wait(Native Method) 
    - waiting on <0x00000000fb2d8370> (a java.lang.ref.Reference$Lock) 
    at java.lang.Object.wait(Object.java:502) 
    at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:133) 
    - locked <0x00000000fb2d8370> (a java.lang.ref.Reference$Lock) 

"main" prio=10 tid=0x0000000001db4800 nid=0x198d in Object.wait() [0x00007f7775067000] 
    java.lang.Thread.State: WAITING (on object monitor) 
    at java.lang.Object.wait(Native Method) 
    - waiting on <0x00000000fab8d110> (a scala.concurrent.SyncVar) 
    at java.lang.Object.wait(Object.java:502) 
    at scala.concurrent.SyncVar.get(SyncVar.scala:22) 
    - locked <0x00000000fab8d110> (a scala.concurrent.SyncVar) 
    at scala.concurrent.ThreadRunner$$anonfun$submit$1.apply(ThreadRunner.scala:48) 
    at scala.Function0$class.apply$mcZ$sp(Function0.scala:34) 
    at scala.runtime.AbstractFunction0.apply$mcZ$sp(AbstractFunction0.scala:12) 
    at scala.tools.nsc.interpreter.IMain.global(IMain.scala:162) 
    - locked <0x00000000fb2d8580> (a scala.tools.nsc.interpreter.ILoop$ILoopInterpreter) 
    at scala.tools.nsc.interpreter.JLineCompletion.<init>(JLineCompletion.scala:17) 
    at scala.tools.nsc.interpreter.ILoop.chooseReader(ILoop.scala:791) 
    at scala.tools.nsc.interpreter.ILoop.process(ILoop.scala:807) 
    at scala.tools.nsc.MainGenericRunner.runTarget$1(MainGenericRunner.scala:67) 
    at scala.tools.nsc.MainGenericRunner.process(MainGenericRunner.scala:80) 
    at scala.tools.nsc.MainGenericRunner$.main(MainGenericRunner.scala:89) 
    at scala.tools.nsc.MainGenericRunner.main(MainGenericRunner.scala) 

"VM Thread" prio=10 tid=0x00007f776808a000 nid=0x1990 runnable 

"GC task thread#0 (ParallelGC)" prio=10 tid=0x0000000001dc0000 nid=0x198e runnable 

"GC task thread#1 (ParallelGC)" prio=10 tid=0x0000000001dc1800 nid=0x198f runnable 

"VM Periodic Task Thread" prio=10 tid=0x00007f77680bb800 nid=0x1997 waiting on condition 

JNI global references: 1010 
+0

私のコンピュータ(Scala 2.7.7final、Ubuntu 11.04)で目が瞬く間に開きます。初期化インタプリタのスタックダンプをほとんど捕まえないでください。 'jps'と' jstack'を使います。 –

+0

これは正常に聞こえることはほとんどありません。あなたのハードウェアが損傷していないと仮定して、インテル80386スタートアップを実行していないのはかなり速いはずです。あなたは2.9.1の最新RCを試して、それがより良いかどうかを調べることができます。 – soc

+1

Scala 2.9.0は​​2.8.1よりはるかに遅く始まります。これはScala 2.9.1 AFAIKで扱われます。私の2.66 GHzのOS Xマシンでは、すでに痛いほど遅い6秒かかる。 2.8.1は2秒かかります!しかし、あなたは重大な問題を抱えているように20秒が聞こえます –

答えて

5

今後の2.9.1リリースでは、起動時間が短縮されます。もしあなたが望むなら、ここでRCをダウンロードすることで既にチェックアウトすることができます: http://www.scala-lang.org/downloads

+0

ありがとうございます。私はRCにショットを与え、それが違いを生むかどうかを見ていきます。 – Owen

+0

2.9.1は実際にはるかに速く始まります。ありがとうございました。 – Owen

+0

それはあなたのためにうれしいよ;) – AndreasScheinert