main 3a10209

benchmark.c RawHistoryFolder

1// SPDX-License-Identifier: Apache-2.0
2// SPDX-FileCopyrightText: 2026 The Ebitengine Authors
3
4#include <stdint.h>
5#include <time.h>
6
7void write_through(uint64_t *p, uint64_t v) {
8  *p = v;
9  struct timespec start, now;
10  clock_gettime(CLOCK_MONOTONIC, &start);
11  do {
12    clock_gettime(CLOCK_MONOTONIC, &now);
13  } while ((now.tv_sec - start.tv_sec) * 1000000000L + now.tv_nsec - start.tv_nsec < 2000000L);
14}
15
16int64_t sum1_c(int64_t a1) { return a1; }
17
18int64_t sum2_c(int64_t a1, int64_t a2) { return a1 + a2; }
19
20int64_t sum3_c(int64_t a1, int64_t a2, int64_t a3) { return a1 + a2 + a3; }
21
22int64_t sum5_c(int64_t a1, int64_t a2, int64_t a3, int64_t a4, int64_t a5) {
23  return a1 + a2 + a3 + a4 + a5;
24}
25
26int64_t sum10_c(int64_t a1, int64_t a2, int64_t a3, int64_t a4, int64_t a5,
27                int64_t a6, int64_t a7, int64_t a8, int64_t a9, int64_t a10) {
28  return a1 + a2 + a3 + a4 + a5 + a6 + a7 + a8 + a9 + a10;
29}
30
31int64_t sum14_c(int64_t a1, int64_t a2, int64_t a3, int64_t a4, int64_t a5,
32                int64_t a6, int64_t a7, int64_t a8, int64_t a9, int64_t a10,
33                int64_t a11, int64_t a12, int64_t a13, int64_t a14) {
34  return a1 + a2 + a3 + a4 + a5 + a6 + a7 + a8 + a9 + a10 + a11 + a12 + a13 +
35         a14;
36}
37
38int64_t sum15_c(int64_t a1, int64_t a2, int64_t a3, int64_t a4, int64_t a5,
39                int64_t a6, int64_t a7, int64_t a8, int64_t a9, int64_t a10,
40                int64_t a11, int64_t a12, int64_t a13, int64_t a14,
41                int64_t a15) {
42  return a1 + a2 + a3 + a4 + a5 + a6 + a7 + a8 + a9 + a10 + a11 + a12 + a13 +
43         a14 + a15;
44}
45
46typedef int64_t (*callback1_t)(int64_t);
47int64_t call_callback1(callback1_t cb, int64_t a1) { return cb(a1); }
48
49typedef int64_t (*callback2_t)(int64_t, int64_t);
50int64_t call_callback2(callback2_t cb, int64_t a1, int64_t a2) {
51  return cb(a1, a2);
52}
53
54typedef int64_t (*callback3_t)(int64_t, int64_t, int64_t);
55int64_t call_callback3(callback3_t cb, int64_t a1, int64_t a2, int64_t a3) {
56  return cb(a1, a2, a3);
57}
58
59typedef int64_t (*callback5_t)(int64_t, int64_t, int64_t, int64_t, int64_t);
60int64_t call_callback5(callback5_t cb, int64_t a1, int64_t a2, int64_t a3,
61                       int64_t a4, int64_t a5) {
62  return cb(a1, a2, a3, a4, a5);
63}
64
65typedef int64_t (*callback10_t)(int64_t, int64_t, int64_t, int64_t, int64_t,
66                                int64_t, int64_t, int64_t, int64_t, int64_t);
67int64_t call_callback10(callback10_t cb, int64_t a1, int64_t a2, int64_t a3,
68                        int64_t a4, int64_t a5, int64_t a6, int64_t a7,
69                        int64_t a8, int64_t a9, int64_t a10) {
70  return cb(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10);
71}
72
73typedef int64_t (*callback14_t)(int64_t, int64_t, int64_t, int64_t, int64_t,
74                                int64_t, int64_t, int64_t, int64_t, int64_t,
75                                int64_t, int64_t, int64_t, int64_t);
76int64_t call_callback14(callback14_t cb, int64_t a1, int64_t a2, int64_t a3,
77                        int64_t a4, int64_t a5, int64_t a6, int64_t a7,
78                        int64_t a8, int64_t a9, int64_t a10, int64_t a11,
79                        int64_t a12, int64_t a13, int64_t a14) {
80  return cb(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14);
81}
82
83typedef int64_t (*callback15_t)(int64_t, int64_t, int64_t, int64_t, int64_t,
84                                int64_t, int64_t, int64_t, int64_t, int64_t,
85                                int64_t, int64_t, int64_t, int64_t, int64_t);
86int64_t call_callback15(callback15_t cb, int64_t a1, int64_t a2, int64_t a3,
87                        int64_t a4, int64_t a5, int64_t a6, int64_t a7,
88                        int64_t a8, int64_t a9, int64_t a10, int64_t a11,
89                        int64_t a12, int64_t a13, int64_t a14, int64_t a15) {
90  return cb(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15);
91}

Keyboard shortcuts

Single-key shortcuts are on. ctrl k and esc work whatever this says.

ctrl k :
go to a section, branch, tag, file or repository
?
this list
j k
move the row cursor down / up
enter
open the row under the cursor; on Files, a directory opens or closes in place
↑ ↓ ← → home end
in the file tree (focus on a row): previous / next row, close / open a directory or go to its parent / first entry, first / last row. They never open a file
l h
on Files: open a directory or a file / close a directory or go up to its parent, then to the parent page. Elsewhere: into the side panel (on a merge request, its files) / back to the content; there j k move between its controls
g g G
first / last row
/
filter the list; on Files, find a file anywhere in the repository (esc clears, enter opens the best match)
b
switch branch or tag
g s g f g c g b g m g i g r g a
tabs: summary, files, commits, branches & tags, merge requests, issues, releases, actions (when available)
g h
home
w
wide mode: use the whole width of the screen, or not (remembered)
y
copy a permalink pinned to the commit
d u x
diff: split / unified / collapse or expand all
e E
diff: the whole file in view / every file, with the lines the hunks hide
n
merge request: next note in the diff
esc
close a dialog, leave a field

Branches 1

Tags 102

↑↓ moveenter openesc close