summaryrefslogtreecommitdiff
path: root/tests/modules/string/lastof_perf.lua
blob: eb0c40e76960e403a1ff35dcdd274304dcbd8ccf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38

function _lastof_perf(str, pattern, opt)
    local plain = opt and opt.plain
    local dt = os.mclock()
    for i = 0, 1000000 do
        str:lastof(pattern, plain)
    end
    dt = os.mclock() - dt
    print("lastof(%s .., %s, %s): %d ms", str:sub(1, 16), pattern, string.serialize(opt or {}, {strip = true, indent = false}), dt)
end

function main()

    local str = "shortstr: 123abc123123xyz[123]+abc123"
    _lastof_perf(str, "1")
    _lastof_perf(str, "123")
    _lastof_perf(str, "[123]+")
    print("")

    _lastof_perf(str, "1", {plain = true})
    _lastof_perf(str, "123", {plain = true})
    _lastof_perf(str, "[123]+", {plain = true})
    print("")

    str = "longstr: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
    for i = 0, 100 do
        str = str .. "[123]+"
    end
    _lastof_perf(str, "1")
    _lastof_perf(str, "123")
    _lastof_perf(str, "[123]+")
    print("")

    _lastof_perf(str, "1", {plain = true})
    _lastof_perf(str, "123", {plain = true})
    _lastof_perf(str, "[123]+", {plain = true})
    print("")
end