[piccolo2d-dev] [piccolo2d] r956 committed - Adding stragler Measurements class
Revision: 956 Author: allain.lalonde Date: Tue Jan 26 07:04:07 2010 Log: Adding stragler Measurements class http://code.google.com/p/piccolo2d/source/detail?r=956 Added: /piccolo2d.java/branches/2.0-spike/core/src/test/java/org/piccolo2d/Measurements.java Modified: /piccolo2d.java/branches/2.0-spike/parent/.settings/org.eclipse.jdt.core.prefs /piccolo2d.java/branches/2.0-spike/swt/src/main/java/org/piccolo2d/swt/PSWTBoundsHandle.java /piccolo2d.java/branches/2.0-spike/swt/src/main/java/org/piccolo2d/swt/PSWTText.java /piccolo2d.java/branches/2.0-spike/swt/src/main/java/org/piccolo2d/swt/SWTShapeManager.java === --- /dev/null +++ /piccolo2d.java/branches/2.0-spike/core/src/test/java/org/piccolo2d/Measurements.java Tue Jan 26 07:04:07 2010 @@ -0,0 +1,103 @@ +package org.piccolo2d; + +import java.util.HashMap; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; + +public class Measurements { +private MapString, ListLong measurements = new HashMapString, ListLong(); + +public void time(String name, Runnable runnable) { +if (!measurements.containsKey(name)) { +measurements.put(name, new LinkedListLong()); +} + +long startTime = System.currentTimeMillis(); +runnable.run(); +long endTime = System.currentTimeMillis(); + +measurements.get(name).add(endTime - startTime); +} + +public void memory(String name, Runnable runnable) { +if (!measurements.containsKey(name)) { +measurements.put(name, new LinkedListLong()); +} + +Runtime.getRuntime().gc(); +final long startTotalMemory = Runtime.getRuntime().totalMemory(); +final long startFree = Runtime.getRuntime().freeMemory(); + +runnable.run(); + +Runtime.getRuntime().gc(); +final long endFree = Runtime.getRuntime().freeMemory(); +final long endTotal = Runtime.getRuntime().totalMemory(); + +final long memoryUsed = ((endTotal - startTotalMemory + startFree - endFree) / 1024); +measurements.get(name).add(memoryUsed); +} + +public void writeLog() { +System.out.println(name,average,min,max); +for (EntryString, ListLong entry : measurements.entrySet()) { +System.out.print(''); +System.out.print(entry.getKey()); +System.out.print(''); +System.out.print(, ); +System.out.print(calculateAverage(entry.getValue())); +System.out.print(, ); +System.out.print(calculateMinimum(entry.getValue())); +System.out.print(, ); +System.out.print(calculateMaximum(entry.getValue())); +System.out.println(); +} + +System.out.println(); +System.out.println(Raw Data); +System.out.println(name, run, value); +for (EntryString, ListLong entry : measurements.entrySet()) { +int runCount = 0; +for (long value : entry.getValue()) { +System.out.print(''); +System.out.print(entry.getKey()); +System.out.print(''); +System.out.print(, ); +System.out.print(++runCount); +System.out.print(, ); +System.out.println(value); +} +} +} + +private long calculateAverage(ListLong measurements) { +long total = 0; + +for (Long measurement : measurements) +total += measurement; + +return total / measurements.size(); +} + +private long calculateMinimum(ListLong measurements) { +long min = measurements.get(0); + +for (Long measurement : measurements) +if (min measurement) +min = measurement; + +return min; +} + +private long calculateMaximum(ListLong measurements) { +long max = measurements.get(0); + +for (Long measurement : measurements) +if (max measurement) +max = measurement; + +return max; +} +} === --- /piccolo2d.java/branches/2.0-spike/parent/.settings/org.eclipse.jdt.core.prefs Wed Oct 28 07:58:59 2009 +++ /piccolo2d.java/branches/2.0-spike/parent/.settings/org.eclipse.jdt.core.prefs Tue Jan 26 07:04:07 2010 @@ -1,5 +1,12 @@ -#Wed Oct 28 10:17:01 EDT 2009 +#Tue Jan 26 09:12:03 EST 2010 eclipse.preferences.version=1 -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.4 -org.eclipse.jdt.core.compiler.compliance=1.4 -org.eclipse.jdt.core.compiler.source=1.4 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=1.5 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate
[piccolo2d-dev] [piccolo2d] r957 committed - Fixing some findbugs warnings
Revision: 957 Author: allain.lalonde Date: Tue Jan 26 07:51:15 2010 Log: Fixing some findbugs warnings http://code.google.com/p/piccolo2d/source/detail?r=957 Modified: /piccolo2d.java/branches/2.0-spike/core/src/test/java/org/piccolo2d/MockPCamera.java /piccolo2d.java/branches/2.0-spike/core/src/test/java/org/piccolo2d/PCameraTest.java /piccolo2d.java/branches/2.0-spike/examples/src/main/java/org/piccolo2d/examples/DynamicExample.java /piccolo2d.java/branches/2.0-spike/examples/src/main/java/org/piccolo2d/examples/ExampleRunner.java /piccolo2d.java/branches/2.0-spike/examples/src/main/java/org/piccolo2d/examples/GraphEditorExample.java /piccolo2d.java/branches/2.0-spike/examples/src/main/java/org/piccolo2d/examples/GroupExample.java /piccolo2d.java/branches/2.0-spike/examples/src/main/java/org/piccolo2d/examples/LayoutExample.java /piccolo2d.java/branches/2.0-spike/examples/src/main/java/org/piccolo2d/examples/P3DRectExample.java /piccolo2d.java/branches/2.0-spike/examples/src/main/java/org/piccolo2d/examples/PrintExample.java /piccolo2d.java/branches/2.0-spike/examples/src/main/java/org/piccolo2d/examples/ScrollingExample.java /piccolo2d.java/branches/2.0-spike/examples/src/main/java/org/piccolo2d/examples/ShadowExample.java /piccolo2d.java/branches/2.0-spike/examples/src/main/java/org/piccolo2d/examples/StickyHandleLayerExample.java /piccolo2d.java/branches/2.0-spike/examples/src/main/java/org/piccolo2d/examples/SwingLayoutExample.java /piccolo2d.java/branches/2.0-spike/examples/src/main/java/org/piccolo2d/examples/fisheye/CalendarNode.java /piccolo2d.java/branches/2.0-spike/examples/src/main/java/org/piccolo2d/examples/fisheye/DayNode.java /piccolo2d.java/branches/2.0-spike/examples/src/main/java/org/piccolo2d/examples/fisheye/TabularFisheye.java /piccolo2d.java/branches/2.0-spike/examples/src/main/java/org/piccolo2d/examples/fisheye/TabularFisheyeApplet.java /piccolo2d.java/branches/2.0-spike/examples/src/main/java/org/piccolo2d/examples/fisheye/TabularFisheyeFrame.java /piccolo2d.java/branches/2.0-spike/examples/src/main/java/org/piccolo2d/examples/pswing/MultiplePSwingCanvasesExample.java /piccolo2d.java/branches/2.0-spike/examples/src/main/java/org/piccolo2d/examples/pswing/PSwingExample2.java /piccolo2d.java/branches/2.0-spike/examples/src/main/java/org/piccolo2d/examples/pswing/PSwingExample3.java /piccolo2d.java/branches/2.0-spike/examples/src/main/java/org/piccolo2d/tutorial/PiccoloPresentation.java /piccolo2d.java/branches/2.0-spike/extras/src/main/java/org/piccolo2d/extras/event/PNotification.java /piccolo2d.java/branches/2.0-spike/extras/src/main/java/org/piccolo2d/extras/event/PNotificationCenter.java /piccolo2d.java/branches/2.0-spike/extras/src/test/java/org/piccolo2d/extras/PFrameTest.java /piccolo2d.java/branches/2.0-spike/extras/src/test/java/org/piccolo2d/extras/handles/PHandleTest.java /piccolo2d.java/branches/2.0-spike/extras/src/test/java/org/piccolo2d/extras/pswing/PSwingEventHandlerTest.java /piccolo2d.java/branches/2.0-spike/extras/src/test/java/org/piccolo2d/extras/pswing/PSwingTest.java /piccolo2d.java/branches/2.0-spike/swt/src/main/java/org/piccolo2d/swt/PSWTBoundsHandle.java /piccolo2d.java/branches/2.0-spike/swt/src/main/java/org/piccolo2d/swt/PSWTCanvas.java /piccolo2d.java/branches/2.0-spike/swt/src/main/java/org/piccolo2d/swt/PSWTKeyEvent.java /piccolo2d.java/branches/2.0-spike/swt/src/main/java/org/piccolo2d/swt/PSWTMouseEvent.java /piccolo2d.java/branches/2.0-spike/swt/src/main/java/org/piccolo2d/swt/PSWTSelectionEventHandler.java /piccolo2d.java/branches/2.0-spike/swt/src/main/java/org/piccolo2d/swt/SWTGraphics2D.java /piccolo2d.java/branches/2.0-spike/swt/src/test/java/org/piccolo2d/swt/PSWTImageTest.java /piccolo2d.java/branches/2.0-spike/swt-examples/src/main/java/org/piccolo2d/swt/examples/SWTBenchTest.java === --- /piccolo2d.java/branches/2.0-spike/core/src/test/java/org/piccolo2d/MockPCamera.java Wed Jan 20 10:01:15 2010 +++ /piccolo2d.java/branches/2.0-spike/core/src/test/java/org/piccolo2d/MockPCamera.java Tue Jan 26 07:51:15 2010 @@ -31,9 +31,6 @@ import java.util.ArrayList; import java.util.List; -import org.piccolo2d.PCamera; -import org.piccolo2d.PLayer; -import org.piccolo2d.PNode; import org.piccolo2d.util.PBounds; @@ -52,22 +49,25 @@ static class Notification { private final String type; private final PBounds bounds; -// this should really be PLayer -private final PNode layer; - -private Notification(final String type, final PBounds bounds, final PNode layer) { +private final PLayer layer; + +private Notification(final String type, final PBounds bounds, final PLayer layer) { this.bounds = bounds; this.layer = layer; this.type = type; } -public PNode getLayer() { +
[piccolo2d-dev] Re: Release Piccolo2D.Java 1.3
--- [ ] +1 I support this release [ ] +0 [ ] -0 [X] -1 I oppose this release because... PSwing appears to have some new problems, and PhET (my client) relies heavily on PSwing. Specifically: (1) Visibility issues; there are nodes that should be visible and are not, and vice-versa. (2) Bounds issues; computing PSwing offsets for the purposes of layout is resulting in additional whitespace. I've observed problem (1) in 3 applications, problem (2) in 1 application, on both Windows and Mac platforms. I've been trying to isolate the problems in small test applications, but have been unsuccessful so far. I'm going to continue with that effort a little longer, then have a look at PSwing changes. -- Piccolo2D Developers Group: http://groups.google.com/group/piccolo2d-dev?hl=en
Re: [piccolo2d-dev] Re: Release Piccolo2D.Java 1.3
So far, I have tested 3 of my Piccolo applications, and found only 1 problem in one of the 3 applications. My problem is exhibited with the release candidate 1.3 rc1, but not with our previously used snapshot r390 (circa 9/9/2008), and it also appears to be related to PSwing; a panel with 2 radio buttons is shown in the scene graph, but is noninteractive. This problem by itself wouldn't suggest to me just cause for opposing rc1, unless there is no application-side fix (rather than piccolo or pswing fix) that can resolve or workaround the problem (I don't yet know whether there is an application-side fix). However, based on cmalley's remarks below, I don't think this version should be promoted to a release, and perhaps we'll be able to isolate and resolve my issue as we are working on the related pswing issues. Sam Reid On 1/26/2010 2:35 PM, cmal...@pixelzoom.com wrote: --- [ ] +1 I support this release [ ] +0 [ ] -0 [X] -1 I oppose this release because... PSwing appears to have some new problems, and PhET (my client) relies heavily on PSwing. Specifically: (1) Visibility issues; there are nodes that should be visible and are not, and vice-versa. (2) Bounds issues; computing PSwing offsets for the purposes of layout is resulting in additional whitespace. I've observed problem (1) in 3 applications, problem (2) in 1 application, on both Windows and Mac platforms. I've been trying to isolate the problems in small test applications, but have been unsuccessful so far. I'm going to continue with that effort a little longer, then have a look at PSwing changes. -- Piccolo2D Developers Group: http://groups.google.com/group/piccolo2d-dev?hl=en