More efficient proc sorting

This commit is contained in:
aristocratos 2021-06-20 00:04:02 +02:00
parent 3e92a5e89a
commit 470bca62ec

View file

@ -323,26 +323,23 @@ namespace Proc {
new_proc.mem *= page_size; new_proc.mem *= page_size;
} }
//* Create proc_info //* Push process to vector
procs.push_back(new_proc); procs.push_back(new_proc);
} }
} }
//* Sort processes //* Sort processes
rng::sort(procs, [sortint = v_index(sort_vector, sorting), &reverse](proc_info& a, proc_info& b) { auto cmp = [&reverse](auto &a, auto &b) { return (reverse ? a < b : a > b); };
switch (sortint) { switch (v_index(sort_vector, sorting)) {
case 0: return (reverse) ? a.pid < b.pid : a.pid > b.pid; case 0: { rng::sort(procs, cmp, &proc_info::pid); break; }
case 1: return (reverse) ? a.name < b.name : a.name > b.name; case 1: { rng::sort(procs, cmp, &proc_info::name); break; }
case 2: return (reverse) ? a.cmd < b.cmd : a.cmd > b.cmd; case 2: { rng::sort(procs, cmp, &proc_info::cmd); break; }
case 3: return (reverse) ? a.threads < b.threads : a.threads > b.threads; case 3: { rng::sort(procs, cmp, &proc_info::threads); break; }
case 4: return (reverse) ? a.user < b.user : a.user > b.user; case 4: { rng::sort(procs, cmp, &proc_info::user); break; }
case 5: return (reverse) ? a.mem < b.mem : a.mem > b.mem; case 5: { rng::sort(procs, cmp, &proc_info::mem); break; }
case 6: return (reverse) ? a.cpu_p < b.cpu_p : a.cpu_p > b.cpu_p; case 6: { rng::sort(procs, cmp, &proc_info::cpu_p); break; }
case 7: return (reverse) ? a.cpu_c < b.cpu_c : a.cpu_c > b.cpu_c; case 7: { rng::sort(procs, cmp, &proc_info::cpu_c); break; }
} }
return false;
});
//* When sorting with "cpu lazy" push processes over threshold cpu usage to the front regardless of cumulative usage //* When sorting with "cpu lazy" push processes over threshold cpu usage to the front regardless of cumulative usage
if (sorting == "cpu lazy" && !tree && !reverse) { if (sorting == "cpu lazy" && !tree && !reverse) {