X-Git-Url: http://nitlanguage.org diff --git a/tests/bench_complex_sort.nit b/tests/bench_complex_sort.nit index b86f796..5d96859 100644 --- a/tests/bench_complex_sort.nit +++ b/tests/bench_complex_sort.nit @@ -16,66 +16,72 @@ interface Elt - meth val1: Int is abstract - meth val2: Int do return val1 + fun val1: Int is abstract + fun val2: Int do return val1 end class A -special Elt - attr _a: Int - redef meth val1: Int do return _a + super Elt + var a: Int + redef fun val1: Int do return _a init(i: Int) do _a = i + redef fun to_s do return "Aa{a}" end class Elt2 -special Elt - attr _b: Int - redef meth val1: Int do return _b/2 - redef meth val2: Int do return _b + super Elt + var b: Int + redef fun val1: Int do return _b/2 + redef fun val2: Int do return _b init initelt2(i: Int) do _b = i end class B -special Elt2 + super Elt2 init(i: Int) do initelt2(i) + redef fun to_s do return "Bb{b}" end class C -special Elt - attr _c: Int - attr _d: Int - redef meth val1: Int do return _c end - redef meth val2: Int do return _d end + super Elt + var c: Int + var d: Int + redef fun val1: Int do return _c end + redef fun val2: Int do return _d end init init2(i: Int, j: Int) do _c = i _d = j end + redef fun to_s do return "Cc{c}d{d}" end class D -special A -special Elt2 - redef meth val1: Int do return _a end - redef meth val2: Int do return _b end + super A + super Elt2 + redef fun val1: Int do return _a end + redef fun val2: Int do return _b end init init2(i: Int, j: Int) do init(i) initelt2(j) end + redef fun to_s do return "Da{a}b{b}" end class E -special Elt2 - redef meth val1: Int do return 5 end + super Elt2 + redef fun val1: Int do return 5 end init(i: Int) do initelt2(i) + redef fun to_s do return "Eb{b}" end -class EltSorter -special AbstractSorter[Elt] - redef meth compare(a: Elt, b: Elt): Int +class EltComparator + super Comparator + redef type COMPARED: Elt + redef fun compare(a, b) do if _is_val1 then return a.val1 <=> b.val1 @@ -84,17 +90,17 @@ special AbstractSorter[Elt] end end - meth toggle + fun toggle do _is_val1 = not _is_val1 end - attr _is_val1: Bool = false + var is_val1: Bool = false init do end end -meth generator: Elt +fun generator: Elt do var r = 5.rand if r == 0 then @@ -110,7 +116,8 @@ do end end -var n = 100 +srand_from(0) +var n = 20 if not args.is_empty then n = args.first.to_i @@ -121,9 +128,12 @@ for i in [0..n[ do array.push(generator) end -var sorter = new EltSorter +print array.join(", ") + +var comparator = new EltComparator for i in [0..n[ do - sorter.sort(array) - sorter.toggle + comparator.sort(array) + comparator.toggle end +print array.join(", ")