92 lines · 2.1 KB · Lua
RawDownload
local function round(x)    return math.floor(x + 0.5)end local pkg2sum = {}local pkg2n = {} for line in io.stdin:lines() do    if line:match("%[done%]") then        local _, pkg, _, _, time = assert(line:match("(%[done%]) +([^ ]+) +([^ ]+) +([^ ]+) KiB +([^ ]+)"))        local minutes, seconds = assert(time:match("(%d+)m([%d%.]+)"))        local total_seconds = minutes * 60 + seconds        pkg2sum[pkg] = (pkg2sum[pkg] or 0) + total_seconds        pkg2n[pkg] = (pkg2n[pkg] or 0) + 1    endend local pkg2avg = {}for pkg, sum in pairs(pkg2sum) do    local n = assert(pkg2n[pkg])    local avg = sum / n    pkg2avg[pkg] = avg    --print(avg)end local sum = 0local n = 0for pkg, time in pairs(pkg2avg) do    sum = sum + time    n = n + 1end local AVG1 = sum / nprint("Average: " .. AVG1) local MIN_FACTOR = 3.0 local sum2 = 0local n2 = 0for pkg, time in pairs(pkg2avg) do    local factor = time / AVG1    if factor < MIN_FACTOR then        sum2 = sum2 + time        n2 = n2 + 1    endend local AVG2 = sum2 / n2local max_factor = 0 local factor2pkgs = {}for pkg, time in pairs(pkg2avg) do    local factor = time / AVG1    if factor >= MIN_FACTOR then        local factor2 = round(time / AVG2)        factor2pkgs[factor2] = factor2pkgs[factor2] or {}        table.insert(factor2pkgs[factor2], '"' .. pkg .. '"')        max_factor = math.max(max_factor, factor2)    endend local MIN_GROUP = 3 -- grouplocal group = {}local sum = 0local factor2pkgs2 = {}for factor = 0, max_factor do    local pkgs = factor2pkgs[factor]    if pkgs then        for _, pkg in ipairs(pkgs) do            table.insert(group, pkg)            sum = sum + factor        end        if #group >= MIN_GROUP or factor == max_factor then            local factor3 = round(sum / #group)            assert(not factor2pkgs2[factor3])            factor2pkgs2[factor3] = group            sum = 0            group = {}        end    endend print("local HUGE_TIMES = {")for factor = 0, max_factor do    local pkgs = factor2pkgs2[factor]    if pkgs then        print(("[%d] = {%s},"):format(factor, table.concat(pkgs, ', ')))    endendprint("}")

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t