summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Kolesa <quaker66@gmail.com>2014-04-10 10:59:12 +0100
committerDaniel Kolesa <quaker66@gmail.com>2014-04-10 10:59:12 +0100
commit4eda65ab1e178a50995bb0dcf76e04ca3ce32b23 (patch)
treec51e0c551026c05acffa57f950e9c5327c94f421
parentb9f95745ce7b3b40e594548ff8cb66d069440165 (diff)
downloadefl-4eda65ab1e178a50995bb0dcf76e04ca3ce32b23.tar.gz
elua: benchmark module, plus return values for init/shutdown
-rw-r--r--src/bin/elua/modules/benchmark.lua100
-rw-r--r--src/bin/elua/modules/elm.lua2
-rw-r--r--src/bindings/luajit/eina/counter.lua2
-rw-r--r--src/bindings/luajit/eina/file.lua2
-rw-r--r--src/bindings/luajit/eina/hamster.lua2
-rw-r--r--src/bindings/luajit/eina/iterator.lua2
-rw-r--r--src/bindings/luajit/eina/log.lua17
-rw-r--r--src/bindings/luajit/eina/rectangle.lua2
-rw-r--r--src/bindings/luajit/eina/tiler.lua2
-rw-r--r--src/bindings/luajit/eina/xattr.lua2
-rw-r--r--src/examples/elua/elm_test.lua2
11 files changed, 131 insertions, 4 deletions
diff --git a/src/bin/elua/modules/benchmark.lua b/src/bin/elua/modules/benchmark.lua
new file mode 100644
index 0000000000..b7071318bd
--- /dev/null
+++ b/src/bin/elua/modules/benchmark.lua
@@ -0,0 +1,100 @@
+-- Elua benchmark module
+-- Dependencies: eina.counter, eina.log, util, cutil
+
+local cutil = require("cutil")
+local util = require("util")
+local counter = require("eina.counter")
+local log = require("eina.log")
+
+local Counter = counter.Counter
+
+local M = {}
+
+local dom
+
+cutil.init_module(function()
+ dom = log.Domain("elua_benchmark")
+ if not dom:is_valid() then
+ log.err("Could not register log domain: elua_benchmark")
+ return false
+ end
+ return true
+end, function()
+ dom:unregister()
+ dom = nil
+ return true
+end)
+
+local PLOT_MASK = "bench_%s_%s.gnuplot"
+local DATA_MASK = "bench_%s_%s.%s.data"
+
+M.Benchmark = util.Object:clone {
+ __ctor = function(self, name, run)
+ self.name, self.run = name, run
+ self.runs = {}
+ end,
+
+ register = function(self, name, bench_cb, c_start, c_end, c_step)
+ self.runs[#self.runs + 1] = {
+ cb = bench_cb, name = name, c_start = c_start, c_end = c_end,
+ c_step = c_step
+ }
+ return true
+ end,
+
+ run = function(self, pmask, dmask)
+ pmask, dmask = pmask or PLOT_MASK, dmask or DATA_MASK
+ local fname = pmask:format(self.name, self.run)
+ local plots = io.open(fname, "w")
+ if not plots then
+ return nil
+ end
+ local fnames = {}
+ fnames[#fnames + 1] = fname
+ plots:write(([[
+set autoscale # scale axes automatically
+unset log # remove any log-scaling
+unset label # remove any previous labels
+set xtic auto # set xtics automatically
+set ytic auto # set ytics automatically
+set terminal png size 1024,768
+set output "output_%s_%s.png"
+set title "%s %s"
+set xlabel "tests"
+set ylabel "time"
+plot ]]):format(self.name, self.run, self.name, self.run))
+ local first = false
+ for i, run in ipairs(self.runs) do
+ local fname = dmask:format(self.name, self.run, run.name)
+ local datas = io.open(fname, "w")
+ if datas then
+ fnames[#fnames + 1] = fname
+ local cnt = Counter(run.name)
+ for i = run.c_start, run.c_end, run.c_step do
+ io.stderr:write("Run ", run.name, ": ", i, "\n")
+ cnt:start()
+ run.cb(i)
+ cnt:stop(i)
+ end
+ local ret = cnt:dump()
+ if ret then
+ datas:write(ret)
+ end
+ cnt:free()
+ datas:close()
+ if not first then
+ first = true
+ else
+ plots:write(", \\\n")
+ end
+ plots:write(("\"%s\" using 1:2 title \'%s\' with line")
+ :format(fname, run.name))
+ end
+ end
+ plots:write("\n")
+ plots:close()
+ return fnames
+ end
+}
+
+return M \ No newline at end of file
diff --git a/src/bin/elua/modules/elm.lua b/src/bin/elua/modules/elm.lua
index 43a4e473d5..edc41dbd15 100644
--- a/src/bin/elua/modules/elm.lua
+++ b/src/bin/elua/modules/elm.lua
@@ -49,8 +49,10 @@ local smart_cb_wrapper = ffi.cast("Evas_Smart_Cb",
cutil.init_module(function()
elm, evas = ffi.load("elementary"), ffi.load("evas")
elm.elm_init(0, nil)
+ return true
end, function()
elm.elm_exit()
+ return true
end)
local Evas_Object = util.Object:clone {
diff --git a/src/bindings/luajit/eina/counter.lua b/src/bindings/luajit/eina/counter.lua
index a188d48ecd..6a2f7bc0b9 100644
--- a/src/bindings/luajit/eina/counter.lua
+++ b/src/bindings/luajit/eina/counter.lua
@@ -24,10 +24,12 @@ local eina
local init = function()
eina = util.lib_load("eina")
+ return true
end
local shutdown = function()
util.lib_unload("eina")
+ return true
end
cutil.init_module(init, shutdown)
diff --git a/src/bindings/luajit/eina/file.lua b/src/bindings/luajit/eina/file.lua
index 7cee1ab419..c4067f7441 100644
--- a/src/bindings/luajit/eina/file.lua
+++ b/src/bindings/luajit/eina/file.lua
@@ -136,10 +136,12 @@ local eina
local init = function()
eina = util.lib_load("eina")
+ return true
end
local shutdown = function()
util.lib_unload("eina")
+ return true
end
cutil.init_module(init, shutdown)
diff --git a/src/bindings/luajit/eina/hamster.lua b/src/bindings/luajit/eina/hamster.lua
index 2a7fded054..84889fb62f 100644
--- a/src/bindings/luajit/eina/hamster.lua
+++ b/src/bindings/luajit/eina/hamster.lua
@@ -16,10 +16,12 @@ local eina
local init = function()
eina = util.lib_load("eina")
+ return true
end
local shutdown = function()
util.lib_unload("eina")
+ return true
end
cutil.init_module(init, shutdown)
diff --git a/src/bindings/luajit/eina/iterator.lua b/src/bindings/luajit/eina/iterator.lua
index 61633da707..50936b461c 100644
--- a/src/bindings/luajit/eina/iterator.lua
+++ b/src/bindings/luajit/eina/iterator.lua
@@ -24,10 +24,12 @@ local eina
local init = function()
eina = util.lib_load("eina")
+ return true
end
local shutdown = function()
util.lib_unload("eina")
+ return true
end
ffi.metatype("Eina_Iterator", {
diff --git a/src/bindings/luajit/eina/log.lua b/src/bindings/luajit/eina/log.lua
index 9e6463c2ef..e30f890aa6 100644
--- a/src/bindings/luajit/eina/log.lua
+++ b/src/bindings/luajit/eina/log.lua
@@ -50,11 +50,13 @@ local init = function()
eina = util.lib_load("eina")
global_domain = ffi.new("Domain_Private", eina.EINA_LOG_DOMAIN_GLOBAL)
default_domain = global_domain
+ return true
end
local shutdown = function()
util.lib_unload("eina")
default_domain, global_domain = nil, nil
+ return true
end
cutil.init_module(init, shutdown)
@@ -70,6 +72,7 @@ M.level = {
}
M.color = {
+ DEFAULT = "\x1B[36m",
LIGHTRED = "\x1B[31;1m",
RED = "\x1B[31m",
LIGHTBLUE = "\x1B[34;1m",
@@ -122,7 +125,7 @@ local logfuncs = {
}
for i, v in ipairs(logfuncs) do
- M["log_" .. v[1]] = function(msg)
+ M[v[1]] = function(msg)
if not default_domain then return end
local info = getinfo(2, "nlSf")
local dom = ffi.cast("Domain_Private*", default_domain).domain
@@ -152,6 +155,10 @@ M.Domain_Base = util.Object:clone {
log = function(self, level, msg, loff)
log(self, level, msg, (loff or 0) + 1)
+ end,
+
+ is_valid = function(self)
+ return self:__get_domain() ~= nil
end
}
@@ -173,8 +180,10 @@ M.default_domain = M.Domain_Default
M.Domain = M.Domain_Base:clone {
__ctor = function(self, name, color)
+ local dom = eina.eina_log_domain_register(name, color or "\x1B[36m")
+ if dom < 0 then return end
self.__domain = ffi.gc(ffi.cast("Domain*", ffi.new("Domain_Private",
- eina.eina_log_domain_register(name, color))), unregister_dom)
+ dom)), unregister_dom)
end,
unregister = function(self)
@@ -189,7 +198,9 @@ M.Domain = M.Domain_Base:clone {
}
M.set_default_domain = function(dom)
- default_domain = dom:__get_domain()
+ dom = dom:__get_domain()
+ if not dom then return end
+ default_domain = dom
end
return M \ No newline at end of file
diff --git a/src/bindings/luajit/eina/rectangle.lua b/src/bindings/luajit/eina/rectangle.lua
index edcadba5c3..97aef9bdcb 100644
--- a/src/bindings/luajit/eina/rectangle.lua
+++ b/src/bindings/luajit/eina/rectangle.lua
@@ -36,10 +36,12 @@ local eina
local init = function()
eina = util.lib_load("eina")
+ return true
end
local shutdown = function()
util.lib_unload("eina")
+ return true
end
cutil.init_module(init, shutdown)
diff --git a/src/bindings/luajit/eina/tiler.lua b/src/bindings/luajit/eina/tiler.lua
index 2c68d35520..25372f543b 100644
--- a/src/bindings/luajit/eina/tiler.lua
+++ b/src/bindings/luajit/eina/tiler.lua
@@ -52,10 +52,12 @@ local eina
local init = function()
eina = util.lib_load("eina")
+ return true
end
local shutdown = function()
util.lib_unload("eina")
+ return true
end
cutil.init_module(init, shutdown)
diff --git a/src/bindings/luajit/eina/xattr.lua b/src/bindings/luajit/eina/xattr.lua
index b8ae4cb031..8525c73248 100644
--- a/src/bindings/luajit/eina/xattr.lua
+++ b/src/bindings/luajit/eina/xattr.lua
@@ -53,10 +53,12 @@ local eina
local init = function()
eina = util.lib_load("eina")
+ return true
end
local shutdown = function()
util.lib_unload("eina")
+ return true
end
cutil.init_module(init, shutdown)
diff --git a/src/examples/elua/elm_test.lua b/src/examples/elua/elm_test.lua
index 1078804e4f..d36dd19f91 100644
--- a/src/examples/elua/elm_test.lua
+++ b/src/examples/elua/elm_test.lua
@@ -11,7 +11,7 @@ log.log_err("test with default log domain")
local foo = function()
for i = 1, 4 do
- log.log_err("testing: " .. i)
+ log.err("testing: " .. i)
end
end