mirror of
https://github.com/c3lang/c3c.git
synced 2026-02-27 12:01:16 +00:00
* Add LinkedList Operators and Update Tests * add linkedlist printing and `@new` macros (single-line init and pool-capable) * add linkedlist node and reg iterator; comparisons w/ == * Fix benchmarks. Drop random access to the linked list using []. Only return a direct array view. --------- Co-authored-by: Christoffer Lerno <christoffer@aegik.com>
39 lines
899 B
Plaintext
39 lines
899 B
Plaintext
module linkedlist_benchmarks;
|
|
|
|
import std::collections::linkedlist;
|
|
|
|
|
|
LinkedList{int} long_list;
|
|
const HAY = 2;
|
|
const NEEDLE = 1000;
|
|
|
|
fn void bench_setup() @init
|
|
{
|
|
set_benchmark_warmup_iterations(3);
|
|
set_benchmark_max_iterations(4096);
|
|
|
|
int[*] haystack = { [0..999] = HAY };
|
|
long_list = linkedlist::@new{int}(mem, haystack[..]);
|
|
long_list.push(NEEDLE);
|
|
long_list.push_all(haystack[..]);
|
|
}
|
|
|
|
|
|
// ==============================================================================================
|
|
module linkedlist_benchmarks @benchmark;
|
|
|
|
String die_str = "Failed to find the value `1`. Is something broken?";
|
|
|
|
|
|
fn void foreach_iterator()
|
|
{
|
|
foreach (v : long_list.array_view()) if (v == NEEDLE) return;
|
|
runtime::@kill_benchmark(die_str);
|
|
}
|
|
|
|
fn void foreach_r_iterator()
|
|
{
|
|
foreach_r (v : long_list.array_view()) if (v == NEEDLE) return;
|
|
runtime::@kill_benchmark(die_str);
|
|
}
|