Page 1 of 2

Poor performace again

Posted: Tue Apr 03, 2012 12:43 pm
by freeman8
Hi,
did you ever do some performance testing? Please create a workspace with multiple project (some framework files, phpmyadmin etc) so there is several thousand files. Then use some slower computer and try to use it!
  • performace drops over time
  • outline is refreshing almost on every cursor movement.
  • typing in large files is slow
  • typing in files with many classes is slow
  • etc
got 9.0.3 on widnws

Re: Poor performace again

Posted: Tue Apr 10, 2012 10:42 am
by freeman8
How do you test performace? Thanks

Re: Poor performace again

Posted: Wed Apr 11, 2012 8:24 am
by ganoro
Hi, thanks for sharing.
Can you please start your Zend Studio with a "-console" parameter and when you hit a performance issue click ctrl+break in the console Java window?

btw, we do have unit tests for performance issues (mainly for regression testing) but it seems there is a memory leak or bad thread pooling according to your description.

Re: Poor performace again

Posted: Thu Apr 12, 2012 3:54 pm
by freeman8
how can redirect the log to a file? lines are broken when selecting from console
also it's difficult to press ctrl+break in time
maybe it should log automatically when cursor changes to busy

Code: Select all

        - waiting on <0x14e42c20> (a org.eclipse.wst.jsdt.internal.core.search.i
ndexing.IndexManager)
        at java.lang.Object.wait(Object.java:485)
        at org.eclipse.wst.jsdt.internal.core.search.processing.JobManager.run(J
obManager.java:370)
        - locked <0x14e42c20> (a org.eclipse.wst.jsdt.internal.core.search.index
ing.IndexManager)
        at java.lang.Thread.run(Unknown Source)

"Bundle File Closer" daemon prio=6 tid=0x06385000 nid=0x2858 in Object.wait() [0
x41d4f000]
   java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        at java.lang.Object.wait(Object.java:485)
        at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.getNextE
vent(EventManager.java:400)
        - locked <0x14e40b98> (a org.eclipse.osgi.framework.eventmgr.EventManage
r$EventThread)
        at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(Even
tManager.java:336)

"DLTK indexing" daemon prio=4 tid=0x052a8800 nid=0x2668 in Object.wait() [0x41c0
f000]
   java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        - waiting on <0x14d702e0> (a org.eclipse.dltk.core.search.indexing.Index
Manager)
        at java.lang.Object.wait(Object.java:485)
        at org.eclipse.dltk.internal.core.search.processing.JobManager.run(JobMa
nager.java:445)
        - locked <0x14d702e0> (a org.eclipse.dltk.core.search.indexing.IndexMana
ger)
        at java.lang.Thread.run(Unknown Source)

"SVN Kit 1.2 Connector" prio=6 tid=0x052a9400 nid=0x16fc in Object.wait() [0x413
ef000]
   java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        at java.lang.Object.wait(Object.java:485)
        at org.polarion.team.svn.connector.svnkit.SVNKitConnector$ProgressMonito
rThread.run(SVNKitConnector.java:2549)
        - locked <0x14d183e8> (a java.util.ArrayList)

"Thread-6" daemon prio=6 tid=0x052a8c00 nid=0x32b4 in Object.wait() [0x06fef000]

   java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        at java.lang.ref.ReferenceQueue.remove(Unknown Source)
        - locked <0x14d0acd8> (a java.lang.ref.ReferenceQueue$Lock)
        at java.lang.ref.ReferenceQueue.remove(Unknown Source)
        at org.tmatesoft.svn.core.javahl.SVNClientImplTracker.run(SVNClientImplT
racker.java:65)
        at java.lang.Thread.run(Unknown Source)

"Java indexing" daemon prio=4 tid=0x052a7c00 nid=0x31bc in Object.wait() [0x06d0
f000]
   java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        - waiting on <0x14882738> (a org.eclipse.jdt.internal.core.search.indexi
ng.IndexManager)
        at java.lang.Object.wait(Object.java:485)
        at org.eclipse.jdt.internal.core.search.processing.JobManager.run(JobMan
ager.java:382)
        - locked <0x14882738> (a org.eclipse.jdt.internal.core.search.indexing.I
ndexManager)
        at java.lang.Thread.run(Unknown Source)

"org.eclipse.jface.text.reconciler.MonoReconciler" daemon prio=2 tid=0x052a7400
nid=0xa8c in Object.wait() [0x0637f000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        at org.eclipse.jface.text.reconciler.AbstractReconciler$BackgroundThread
.run(AbstractReconciler.java:179)
        - locked <0x14822098> (a org.eclipse.jface.text.reconciler.DirtyRegionQu
eue)

"Thread-3" prio=6 tid=0x052a7000 nid=0x314c in Object.wait() [0x412df000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        at org.eclipse.atf.mozilla.ide.internal.debug.ApplicationEventAdmin$1.ru
n(ApplicationEventAdmin.java:41)
        - locked <0x1476d568> (a java.util.ArrayList)
        at java.lang.Thread.run(Unknown Source)

"[ThreadPool Manager] - Idle Thread" daemon prio=6 tid=0x052a4400 nid=0x2284 in
Object.wait() [0x072ff000]
   java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        at java.lang.Object.wait(Object.java:485)
        at org.eclipse.equinox.internal.util.impl.tpt.threadpool.Executor.run(Ex
ecutor.java:106)
        - locked <0x130e0348> (a org.eclipse.equinox.internal.util.impl.tpt.thre
adpool.Executor)

"Worker-JM" prio=6 tid=0x052a5000 nid=0x32d8 in Object.wait() [0x07a3f000]
   java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        - waiting on <0x130e0440> (a java.util.ArrayList)
        at org.eclipse.core.internal.jobs.InternalWorker.run(InternalWorker.java
:58)
        - locked <0x130e0440> (a java.util.ArrayList)

"[Timer] - Main Queue Handler" daemon prio=6 tid=0x052a4800 nid=0x2774 in Object
.wait() [0x0743f000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        at org.eclipse.equinox.internal.util.impl.tpt.timer.TimerImpl.run(TimerI
mpl.java:141)
        - locked <0x130e04c8> (a java.lang.Object)
        at java.lang.Thread.run(Unknown Source)

"Framework Event Dispatcher" daemon prio=6 tid=0x052a3c00 nid=0x12e0 in Object.w
ait() [0x071bf000]
   java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        at java.lang.Object.wait(Object.java:485)
        at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.getNextE
vent(EventManager.java:400)
        - locked <0x130e0530> (a org.eclipse.osgi.framework.eventmgr.EventManage
r$EventThread)
        at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(Even
tManager.java:336)

"Start Level Event Dispatcher" daemon prio=6 tid=0x052a3400 nid=0x5d0 in Object.
wait() [0x0619f000]
   java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        - waiting on <0x130e05a8> (a org.eclipse.osgi.framework.eventmgr.EventMa
nager$EventThread)
        at java.lang.Object.wait(Object.java:485)
        at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.getNextE
vent(EventManager.java:400)
        - locked <0x130e05a8> (a org.eclipse.osgi.framework.eventmgr.EventManage
r$EventThread)
        at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(Even
tManager.java:336)

"State Data Manager" daemon prio=6 tid=0x052a3000 nid=0x13e0 waiting on conditio
n [0x0605f000]
   java.lang.Thread.State: TIMED_WAITING (sleeping)
        at java.lang.Thread.sleep(Native Method)
        at org.eclipse.osgi.internal.baseadaptor.StateManager.run(StateManager.j
ava:297)
        at java.lang.Thread.run(Unknown Source)

"Framework Active Thread" prio=6 tid=0x052a2800 nid=0x2334 in Object.wait() [0x0
5f5f000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        at org.eclipse.osgi.framework.internal.core.Framework.run(Framework.java
:1817)
        - locked <0x130e0748> (a org.eclipse.osgi.framework.internal.core.Framew
ork)
        at java.lang.Thread.run(Unknown Source)

"Low Memory Detector" daemon prio=6 tid=0x0256ec00 nid=0x24f8 runnable [0x000000
00]
   java.lang.Thread.State: RUNNABLE

"C1 CompilerThread0" daemon prio=10 tid=0x02568000 nid=0x2314 waiting on conditi
on [0x00000000]
   java.lang.Thread.State: RUNNABLE

"Attach Listener" daemon prio=10 tid=0x02567000 nid=0x2ce8 runnable [0x00000000]

   java.lang.Thread.State: RUNNABLE

"Signal Dispatcher" daemon prio=10 tid=0x02563c00 nid=0x2a8c waiting on conditio
n [0x00000000]
   java.lang.Thread.State: RUNNABLE

"Finalizer" daemon prio=8 tid=0x0255b800 nid=0x27c4 in Object.wait() [0x04baf000
]
   java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        at java.lang.ref.ReferenceQueue.remove(Unknown Source)
        - locked <0x130e6bc0> (a java.lang.ref.ReferenceQueue$Lock)
        at java.lang.ref.ReferenceQueue.remove(Unknown Source)
        at java.lang.ref.Finalizer$FinalizerThread.run(Unknown Source)

"Reference Handler" daemon prio=10 tid=0x02559800 nid=0x3200 in Object.wait() [0
x04aaf000]
   java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        at java.lang.Object.wait(Object.java:485)
        at java.lang.ref.Reference$ReferenceHandler.run(Unknown Source)
        - locked <0x130e6c50> (a java.lang.ref.Reference$Lock)

"main" prio=6 tid=0x024da400 nid=0x2b50 runnable [0x0018e000]
   java.lang.Thread.State: RUNNABLE
        at org.eclipse.swt.internal.win32.OS.CallWindowProcW(Native Method)
        at org.eclipse.swt.internal.win32.OS.CallWindowProc(OS.java:2425)
        at org.eclipse.swt.widgets.Tree.callWindowProc(Tree.java:1533)
        at org.eclipse.swt.widgets.Control.windowProc(Control.java:4623)
        at org.eclipse.swt.widgets.Tree.windowProc(Tree.java:5937)
        at org.eclipse.swt.widgets.Display.windowProc(Display.java:4972)
        at org.eclipse.swt.internal.win32.OS.SendMessageW(Native Method)
        at org.eclipse.swt.internal.win32.OS.SendMessage(OS.java:3275)
        at org.eclipse.swt.widgets.Tree.setSelection(Tree.java:4953)
        at org.eclipse.jface.viewers.TreeViewer.setSelection(TreeViewer.java:353
)
        at org.eclipse.jface.viewers.AbstractTreeViewer.setSelectionToWidget(Abs
tractTreeViewer.java:2521)
        at org.eclipse.jface.viewers.AbstractTreeViewer.setSelectionToWidget(Abs
tractTreeViewer.java:2944)
        at org.eclipse.jface.viewers.StructuredViewer.preservingSelection(Struct
uredViewer.java:1450)
        at org.eclipse.jface.viewers.TreeViewer.preservingSelection(TreeViewer.j
ava:403)
        at org.eclipse.jface.viewers.StructuredViewer.preservingSelection(Struct
uredViewer.java:1404)
        at org.eclipse.jface.viewers.AbstractTreeViewer.inputChanged(AbstractTre
eViewer.java:1510)
        at org.eclipse.jface.viewers.ContentViewer.setInput(ContentViewer.java:2
80)
        at org.eclipse.jface.viewers.StructuredViewer.setInput(StructuredViewer.
java:1690)
        at org.eclipse.wst.sse.ui.internal.contentoutline.ConfigurableContentOut
linePage.setInput(ConfigurableContentOutlinePage.java:667)
        at org.eclipse.php.internal.ui.editor.PHPStructuredEditor.getAdapter(PHP
StructuredEditor.java:2418)
        at org.eclipse.wst.sse.ui.internal.contentoutline.ConfigurableContentOut
linePage$PostSelectionServiceListener.selectionChanged(ConfigurableContentOutlin
ePage.java:159)
        at org.eclipse.ui.internal.AbstractSelectionService.firePostSelection(Ab
stractSelectionService.java:179)
        at org.eclipse.ui.internal.AbstractSelectionService$2.selectionChanged(A
bstractSelectionService.java:71)
        at org.eclipse.wst.sse.ui.StructuredTextEditor$StructuredSelectionProvid
er$3.run(StructuredTextEditor.java:592)
        at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
        at org.eclipse.wst.sse.ui.StructuredTextEditor$StructuredSelectionProvid
er.fireSelectionChanged(StructuredTextEditor.java:590)
        at org.eclipse.wst.sse.ui.StructuredTextEditor$StructuredSelectionProvid
er.handlePostSelectionChanged(StructuredTextEditor.java:671)
        at org.eclipse.wst.sse.ui.StructuredTextEditor$StructuredSelectionProvid
er$2.selectionChanged(StructuredTextEditor.java:564)
        at org.eclipse.jface.text.TextViewer.firePostSelectionChanged(TextViewer
.java:2749)
        at org.eclipse.jface.text.TextViewer.firePostSelectionChanged(TextViewer
.java:2697)
        at org.eclipse.jface.text.TextViewer$5.run(TextViewer.java:2676)
        at org.eclipse.swt.widgets.Display.runTimer(Display.java:4266)
        at org.eclipse.swt.widgets.Display.messageProc(Display.java:3353)
        at org.eclipse.swt.internal.win32.OS.DispatchMessageW(Native Method)
        at org.eclipse.swt.internal.win32.OS.DispatchMessage(OS.java:2531)
        at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3752)
        at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2701)
        at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2665)
        at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2499)
        at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:679)
        at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.ja
va:332)
        at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.jav
a:668)
        at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
        at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEAppli
cation.java:123)
        at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandl
e.java:196)
        at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runAppli
cation(EclipseAppLauncher.java:110)
        at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(Ec
lipseAppLauncher.java:79)
        at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.ja
va:344)
        at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.ja
va:179)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:622)
        at org.eclipse.equinox.launcher.Main.basicRun(Main.java:577)
        at org.eclipse.equinox.launcher.Main.run(Main.java:1410)

"VM Thread" prio=10 tid=0x0251d000 nid=0x2e80 runnable

"VM Periodic Task Thread" prio=10 tid=0x02580000 nid=0x2fa4 waiting on condition


JNI global references: 2227

Heap
 def new generation   total 59904K, used 26174K [0x08640000, 0x0c730000, 0x130e0
000)
  eden space 53312K,  43% used [0x08640000, 0x09cc0e68, 0x0ba50000)
  from space 6592K,  47% used [0x0ba50000, 0x0bd5eb18, 0x0c0c0000)
  to   space 6592K,   0% used [0x0c0c0000, 0x0c0c0000, 0x0c730000)
 tenured generation   total 132772K, used 84818K [0x130e0000, 0x1b289000, 0x2864
0000)
   the space 132772K,  63% used [0x130e0000, 0x183b48a0, 0x183b4a00, 0x1b289000)

 compacting perm gen  total 67840K, used 67637K [0x28640000, 0x2c880000, 0x38640
000)
   the space 67840K,  99% used [0x28640000, 0x2c84d658, 0x2c84d800, 0x2c880000)
    ro space 10240K,  51% used [0x38640000, 0x38b6da30, 0x38b6dc00, 0x39040000)
    rw space 12288K,  55% used [0x39040000, 0x396d9b50, 0x396d9c00, 0x39c40000)

Re: Poor performace again

Posted: Thu Apr 12, 2012 3:57 pm
by freeman8
this was after studio restart , will try that after longer usage

Re: Poor performace again

Posted: Fri Apr 13, 2012 11:02 am
by freeman8
when closing file

Re: Poor performace again

Posted: Sun Apr 15, 2012 11:16 am
by freeman8
how can redirect the log to a file? lines are broken when selecting from console
also it's difficult to press ctrl+break in time
maybe it should log automatically when cursor changes to busy
also try using dual monitor setup it's much slower this way
i think you have to test it with real data, automated test are useless i think

Re: Poor performace again

Posted: Tue Apr 17, 2012 1:09 pm
by freeman8
another logs
is that useful?

Re: Poor performace again

Posted: Fri Apr 20, 2012 2:09 pm
by natalia_b_zend
Hi freeman8,

Could you tell me what's the CPU usage when you experience performance issues? Does it stay at 100% for a long time? Also, is the memory used by Zend Studio increasing?
What activities were you performing when you captured the 2nd heap dump that you attached?
Does closing Outline view help when editing files?
What extra features have you installed (if any)?

Could you update your Zend Studio to the latest build from the beta update site (Build ID: 20120418)?
Here are all links:
viewtopic.php?f=59&t=44303#p103148

Thank you

Re: Poor performace again

Posted: Fri Apr 20, 2012 3:05 pm
by freeman8
Hi
i have core i5 and there are some other apps running but usage is usually around 40% of cpu.

I'm not sure what I was doing but i think just common stuff. Firefox and thundebird is open not some application which does use a lot of cpu.

Yes i think closing outline helps quite a lot

I have clean install, installed only svn.

I have now updated to latest build