Scala project occupies more than 100% CPU time
Whenever I open the scala project, the cpu consumption always goes up over 100%. Not in the loading time or indexing time, but while I am doing nothing. only open JAVA projects are normal. Is it Scala plugin issue?
Please sign in to leave a comment.
I concur - for me it's started happening after the latest plugin update. Code analysis seems stuck at between 20-30% and takes cpu over 100% (for the last 10mins). Have put code analysis in power save mode to disable it.
EDIT - I removed and then re-installed the scala plugin and that seems to have fixed it for me.
Hello, could you provide a snapshot (http://devnet.jetbrains.com/docs/DOC-192) ?
Unfortunately I can't - I didn't take any stats before re-installing the plugin. It's been working fine since the reinstall. So for me, and unless many others start noticing issues; I'm happy to consider it something local to my env which got cleaned up with the plugin reinstall.
Perhaps yang sun can offer a snapshot
Here's my CPU snapshot.
Attachment(s):
IU-129.713_yangsun_16.09.2013_11.50.18.zip
I debug it a little. It appears that Slick has something to do with the big CPU usage. Whenever I create an object extends App, and add a few objects extends Table in the same file, and then add some code in the App object, the CPU usage goes up over 100%. (Only when the xxx.scala file is opened in intellij and in the front). If I separate the Table objects and App object in two files, it seems OK.
I finally identified which line cause the problem. Whenever I have this line:
def autoInc = id.? ~ channel_type ~ auth <>(Channel, Channel.unapply _) returning id
CPU will run over 100% like crazy. If I comment it out, CPU runs normally.
Any idea why?
BTW, the line of code is in a Table definition using Slick.
Can you give me example project which causes this performance problem?
Best regards,
Alexander Podkhalyuzin.
I tried to recreate the problem on my Macbook Pro. just created an empty scala project and added "slick_2.10-1.0.1-RC1.jar" to the project Library. And then created Test.scala with the following code:
import scala.slick.driver.MySQLDriver.simple._
case class Test(id:Option[Int], name:String)
object Tests extends Table[Test]("test"){
def id = column[Int]("id", O.AutoInc, O.PrimaryKey)
def name = column[String]("name")
def * = id.? ~ name <> (Test, Test.unapply _) returning id
}
Once I remove the "returning id", CPU consumption reduces to normal. I tried with H2Driver as well. As long as I have the returning(id) in the code, the CPU consumption is over 100%.
I can confirm this, always when I open a Scala file with Intellj my computer gets loud and starts overheating - once I watch activity monitor and CPU (consumed by IntelliJ) was 110% (!!). It doesn't happen with other files (HTML, Css, JS, Java).
My specs: MacBook Pro 2.7 Ghz Intel Core i7 with 8 GB Ram.
Mayor lag specially typing, when hold key e.g. /////////////////////////////////////////////////////// to make a separator it blocks completly and I have to wait 5-10 seconds until I can type again.
I have no time to debug this, to see what code exactly is responsible. One file It's a quite simple controller object for play framework. I don't have "returning" anywhere in my code.
Hi,
I investigated this problem a bit and could find (one of?) the lines causing lag:
def foo(url:String):List[String] = {
val parts = ListBuffer[String]()
val r = """^(?:https|http)?(?:://)?(?:www\.)?([^/]+)([^\?]*)?(.*)?""".r
val r(a, b, c) = url
val x = a.split(":")(0) //<-- this line
parts.toList
}
There was a clear difference, when this line is enabled CPU is 100+%, otherwise 12%
There complete file:
package controllers
import play.api.mvc.Controller
import play.modules.reactivemongo.MongoController
import scala.collection.mutable.ListBuffer
object Bar extends Controller with MongoController {
def foo(url:String):List[String] = {
val parts = ListBuffer[String]()
val r = """^(?:https|http)?(?:://)?(?:www\.)?([^/]+)([^\?]*)?(.*)?""".r
val r(a, b, c) = url
val x = a.split(":")(0) //<-- this line
parts.toList
}
}
Hope that this helps.
Any updates on this? It's really annoying to use the IDE like this... I can check my emails or drink my tea each time I type 2 words... I disabled auto build, put highlighting level for the file to "None" (but nothing seems to happen, it continues highlighting normally) and disabled Scala type-aware highlighting (also continues highlighting). Problem persists.
In my original file (which is long - I reduced it to the posted file deleting randomly code and checking if there's lag) the problem is not only the line I posted, there also seem to be other code, since if I comment this line there, there's still lag. I don't have time to find each of these problem lines though.
Forgot to mention: I'm using IDEA 12.1.6, Plugin version 0.22.302
I'm working on performance issues right now. And I'm fixing performance of "for statements", in some cases it's completely unusable. I hope I'll do it today, then I'll continue with other performance issues.
As for your issue please attach CPU snapshot (http://devnet.jetbrains.com/docs/DOC-192). Your problem is probably known and has workaround.
Best regards,
Alexander Podkhalyuzin.
I just check your code example and for me it works ok.
Please give me CPU snapshot to understand what's going on. Thank you!
Best regards,
Alexander Podkhalyuzin.
Ok, snapshot attached. I just pasted the code sample I posted in an empty file and let "/" pressed a while until not responsive. Activity monitor was reporting 104% CPU. There I took the snapshot.
P.S. Sorry for ignoring your message before, for some reason I didn't see it.
Attachment(s):
idea-2013-10-11-2.snapshot.zip
Ok, looks like you have enabled language injection in Scala. Just disable it and performance will become normal.
Best regards,
Alexander Podkhalyuzin.
I disabled all checkboxes in preferences -> Language injections (and I also selected in "Advanced" "No runtime instrumentation" and "Do not analyze anything (fast)", in the case it helps).
I'm still having the same performance problems.
We have setting for Scala: Settings -> Scala -> Other settings -> Disable language injection in Scala files.
If it doesn't help either, please send me another snapshot of freesing (you also can try other performance related settings).
Best regards,
Alexander Podkhalyuzin.