summaryrefslogtreecommitdiff
path: root/Data/BuiltIn/Libraries/middleclass/performance
diff options
context:
space:
mode:
Diffstat (limited to 'Data/BuiltIn/Libraries/middleclass/performance')
-rw-r--r--Data/BuiltIn/Libraries/middleclass/performance/run.lua43
-rw-r--r--Data/BuiltIn/Libraries/middleclass/performance/time.lua13
2 files changed, 56 insertions, 0 deletions
diff --git a/Data/BuiltIn/Libraries/middleclass/performance/run.lua b/Data/BuiltIn/Libraries/middleclass/performance/run.lua
new file mode 100644
index 0000000..8d8ba47
--- /dev/null
+++ b/Data/BuiltIn/Libraries/middleclass/performance/run.lua
@@ -0,0 +1,43 @@
+local class = require 'middleclass'
+
+time = require 'performance/time'
+
+time('class creation', function()
+ local A = class('A')
+end)
+
+local A = class('A')
+
+time('instance creation', function()
+ local a = A:new()
+end)
+
+function A:foo()
+ return 1
+end
+
+local a = A:new()
+
+time('instance method invocation', function()
+ a:foo()
+end)
+
+local B = class('B', A)
+
+local b = B:new()
+
+time('inherited method invocation', function()
+ b:foo()
+end)
+
+function A.static:bar()
+ return 2
+end
+
+time('class method invocation', function()
+ A:bar()
+end)
+
+time('inherited class method invocation', function()
+ B:bar()
+end)
diff --git a/Data/BuiltIn/Libraries/middleclass/performance/time.lua b/Data/BuiltIn/Libraries/middleclass/performance/time.lua
new file mode 100644
index 0000000..dd02455
--- /dev/null
+++ b/Data/BuiltIn/Libraries/middleclass/performance/time.lua
@@ -0,0 +1,13 @@
+return function(title, f)
+
+ collectgarbage()
+
+ local startTime = os.clock()
+
+ for i=0,10000 do f() end
+
+ local endTime = os.clock()
+
+ print( title, endTime - startTime )
+
+end