From 175a455d75c56f9454f8fa8ec2c0bdae78bda305 Mon Sep 17 00:00:00 2001 From: Alexander Ljungberg Date: Sun, 22 Jun 2014 12:53:21 +0100 Subject: [PATCH] Test: add CPAutosizePerformance test to validate objj_msgSend speed improvements. This test was written by cacaodev. Refs #2103. --- Tests/AppKit/CPAutosizePerformance.j | 63 ++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 Tests/AppKit/CPAutosizePerformance.j diff --git a/Tests/AppKit/CPAutosizePerformance.j b/Tests/AppKit/CPAutosizePerformance.j new file mode 100644 index 000000000..ee8c5e44e --- /dev/null +++ b/Tests/AppKit/CPAutosizePerformance.j @@ -0,0 +1,63 @@ +@import +@import + +[CPApplication sharedApplication]; + + +@implementation CPAutosizeTest : OJTestCase +{ + CPInteger NUMBER_OF_VIEWS; + CPInteger RESIZES_COUNT; +} + +- (void)setUp +{ + NUMBER_OF_VIEWS = 100; + RESIZES_COUNT = 500; +} + +- (void)testAutosizePerf +{ + var dur = 0, + masks = [0,1,2,3,4,5,6,7,8]; + + for (var i = 0; i < 64; i++) + dur += [self _testAutosizePerfWithMask:i]; + + CPLog.warn(dur + " ms when autosizing " + RESIZES_COUNT + " times a window with " + NUMBER_OF_VIEWS + " views, using masks " + masks); +} + +- (CPInteger)_testAutosizePerfWithMask:(CPInteger)aMask +{ + var windowRect = CGRectMake(0, 0, 500, 500); + var _autoSizeWindow = [[CPWindow alloc] initWithContentRect:windowRect styleMask:CPResizableWindowMask]; + + for (var i = 0; i < NUMBER_OF_VIEWS; i++) + { + var x = (i % 10) * 50, + y = FLOOR(i / 10) * 50, + rect = CGRectMake(x, y, 50, 50); + + var autosizeView = [[CPView alloc] initWithFrame:rect]; + [autosizeView setAutoresizingMask:aMask]; + [[_autoSizeWindow contentView] addSubview:autosizeView]; + } + + [_autoSizeWindow setFrame:CGRectMake(0, 0, 600, 600)]; + + var start = new Date(); + + for (var k = 1; k <= RESIZES_COUNT; k++) + { + var size = 600 + k; + [_autoSizeWindow setFrame:CGRectMake(0, 0, size, size)]; + } + + var total = new Date() - start; + + CPLog.warn("AutosizingMask " + aMask + " -setFrame: avg=" + (total/ RESIZES_COUNT) + " ms. Total = " + total + " ms."); + + return total; +} + +@end \ No newline at end of file