Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
ccan
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
mirror
ccan
Commits
d16685e3
Commit
d16685e3
authored
7 years ago
by
Rusty Russell
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
tal: fix up benchmarks for interface changes.
Signed-off-by:
Rusty Russell
<
rusty@rustcorp.com.au
>
parent
df8c663a
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
40 additions
and
30 deletions
+40
-30
ccan/tal/benchmark/samba-allocs.c
ccan/tal/benchmark/samba-allocs.c
+36
-26
ccan/tal/benchmark/speed.c
ccan/tal/benchmark/speed.c
+4
-4
No files found.
ccan/tal/benchmark/samba-allocs.c
View file @
d16685e3
...
...
@@ -10,6 +10,7 @@
#include <sys/stat.h>
#include <unistd.h>
#include <fcntl.h>
#include <inttypes.h>
struct
node
{
void
*
n
;
...
...
@@ -185,7 +186,7 @@ static void do_tals(struct node *node)
char
,
node
->
len
);
else
node
->
n
=
tal_alloc_
(
node
->
parent
?
node
->
parent
->
n
:
NULL
,
node
->
len
,
false
,
TAL_LABEL
(
type
,
""
));
node
->
len
,
false
,
false
,
TAL_LABEL
(
type
,
""
));
if
(
node
->
destructor
)
tal_add_destructor
(
node
->
n
,
unused_tal_destructor
);
...
...
@@ -253,7 +254,8 @@ static void dump_vsize(void)
int
main
(
int
argc
,
char
*
argv
[])
{
struct
timespec
start
,
alloc_time
,
free_time
;
struct
timeabs
start
;
struct
timerel
alloc_time
,
free_time
;
struct
node
*
root
;
unsigned
int
i
;
FILE
*
f
;
...
...
@@ -288,83 +290,91 @@ int main(int argc, char *argv[])
if
(
!
run_malloc
)
goto
after_malloc
;
alloc_time
.
t
v_sec
=
alloc_time
.
tv_nsec
=
0
;
free_time
.
t
v_sec
=
free_time
.
tv_nsec
=
0
;
alloc_time
.
t
s
.
tv_sec
=
alloc_time
.
ts
.
tv_nsec
=
0
;
free_time
.
t
s
.
tv_sec
=
free_time
.
ts
.
tv_nsec
=
0
;
for
(
i
=
0
;
i
<
LOOPS
;
i
++
)
{
start
=
time_now
();
do_mallocs
(
root
);
alloc_time
=
time_add
(
alloc_time
,
time_sub
(
time_now
(),
start
));
alloc_time
=
timerel_add
(
alloc_time
,
time_between
(
time_now
(),
start
));
start
=
time_now
();
free_mallocs
(
root
);
free_time
=
time_add
(
free_time
,
time_sub
(
time_now
(),
start
));
free_time
=
timerel_add
(
free_time
,
time_between
(
time_now
(),
start
));
}
alloc_time
=
time_divide
(
alloc_time
,
i
);
free_time
=
time_divide
(
free_time
,
i
);
printf
(
"Malloc time: %
llu
ns
\n
"
,
time_to_nsec
(
alloc_time
));
printf
(
"Free time: %
llu
ns
\n
"
,
time_to_nsec
(
free_time
));
printf
(
"Malloc time: %
"
PRIu64
"
ns
\n
"
,
time_to_nsec
(
alloc_time
));
printf
(
"Free time: %
"
PRIu64
"
ns
\n
"
,
time_to_nsec
(
free_time
));
after_malloc:
if
(
!
run_talloc
)
goto
after_talloc
;
alloc_time
.
t
v_sec
=
alloc_time
.
tv_nsec
=
0
;
free_time
.
t
v_sec
=
free_time
.
tv_nsec
=
0
;
alloc_time
.
t
s
.
tv_sec
=
alloc_time
.
ts
.
tv_nsec
=
0
;
free_time
.
t
s
.
tv_sec
=
free_time
.
ts
.
tv_nsec
=
0
;
for
(
i
=
0
;
i
<
LOOPS
;
i
++
)
{
start
=
time_now
();
do_tallocs
(
root
);
alloc_time
=
time_add
(
alloc_time
,
time_sub
(
time_now
(),
start
));
alloc_time
=
timerel_add
(
alloc_time
,
time_between
(
time_now
(),
start
));
start
=
time_now
();
free_tallocs
(
root
);
free_time
=
time_add
(
free_time
,
time_sub
(
time_now
(),
start
));
free_time
=
timerel_add
(
free_time
,
time_between
(
time_now
(),
start
));
}
alloc_time
=
time_divide
(
alloc_time
,
i
);
free_time
=
time_divide
(
free_time
,
i
);
printf
(
"Talloc time: %
llu
ns
\n
"
,
time_to_nsec
(
alloc_time
));
printf
(
"talloc_free time: %
llu
ns
\n
"
,
time_to_nsec
(
free_time
));
printf
(
"Talloc time: %
"
PRIu64
"
ns
\n
"
,
time_to_nsec
(
alloc_time
));
printf
(
"talloc_free time: %
"
PRIu64
"
ns
\n
"
,
time_to_nsec
(
free_time
));
free_time
.
t
v_sec
=
free_time
.
tv_nsec
=
0
;
free_time
.
t
s
.
tv_sec
=
free_time
.
ts
.
tv_nsec
=
0
;
for
(
i
=
0
;
i
<
LOOPS
;
i
++
)
{
do_tallocs
(
root
);
start
=
time_now
();
talloc_free
(
root
->
n
);
free_time
=
time_add
(
free_time
,
time_sub
(
time_now
(),
start
));
free_time
=
timerel_add
(
free_time
,
time_between
(
time_now
(),
start
));
}
free_time
=
time_divide
(
free_time
,
i
);
printf
(
"Single talloc_free time: %
lluns
\n
"
,
time_to_nsec
(
free_time
));
printf
(
"Single talloc_free time: %
"
PRIu64
"
\n
"
,
time_to_nsec
(
free_time
));
after_talloc:
if
(
!
run_tal
)
goto
after_tal
;
alloc_time
.
t
v_sec
=
alloc_time
.
tv_nsec
=
0
;
free_time
.
t
v_sec
=
free_time
.
tv_nsec
=
0
;
alloc_time
.
t
s
.
tv_sec
=
alloc_time
.
ts
.
tv_nsec
=
0
;
free_time
.
t
s
.
tv_sec
=
free_time
.
ts
.
tv_nsec
=
0
;
for
(
i
=
0
;
i
<
LOOPS
;
i
++
)
{
start
=
time_now
();
do_tals
(
root
);
alloc_time
=
time_add
(
alloc_time
,
time_sub
(
time_now
(),
start
));
alloc_time
=
timerel_add
(
alloc_time
,
time_between
(
time_now
(),
start
));
start
=
time_now
();
free_tals
(
root
);
free_time
=
time_add
(
free_time
,
time_sub
(
time_now
(),
start
));
free_time
=
timerel_add
(
free_time
,
time_between
(
time_now
(),
start
));
}
alloc_time
=
time_divide
(
alloc_time
,
i
);
free_time
=
time_divide
(
free_time
,
i
);
printf
(
"Tal time: %
llu
ns
\n
"
,
time_to_nsec
(
alloc_time
));
printf
(
"Tal_free time: %
llu
ns
\n
"
,
time_to_nsec
(
free_time
));
printf
(
"Tal time: %
"
PRIu64
"
ns
\n
"
,
time_to_nsec
(
alloc_time
));
printf
(
"Tal_free time: %
"
PRIu64
"
ns
\n
"
,
time_to_nsec
(
free_time
));
free_time
.
t
v_sec
=
free_time
.
tv_nsec
=
0
;
free_time
.
t
s
.
tv_sec
=
free_time
.
ts
.
tv_nsec
=
0
;
for
(
i
=
0
;
i
<
LOOPS
;
i
++
)
{
do_tals
(
root
);
start
=
time_now
();
tal_free
(
root
->
n
);
free_time
=
time_add
(
free_time
,
time_sub
(
time_now
(),
start
));
free_time
=
timerel_add
(
free_time
,
time_between
(
time_now
(),
start
));
}
free_time
=
time_divide
(
free_time
,
i
);
printf
(
"Single tal_free time: %
llu
ns
\n
"
,
time_to_nsec
(
free_time
));
printf
(
"Single tal_free time: %
"
PRIu64
"
ns
\n
"
,
time_to_nsec
(
free_time
));
after_tal:
return
0
;
...
...
This diff is collapsed.
Click to expand it.
ccan/tal/benchmark/speed.c
View file @
d16685e3
...
...
@@ -36,7 +36,7 @@ int main(int argc, char *argv[])
void
*
ctx
;
unsigned
count
;
int
i
,
j
;
struct
time
spec
tv
;
struct
time
abs
tv
;
void
*
p1
,
*
p2
[
100
],
*
p3
[
100
];
bool
run_talloc
=
true
,
run_tal
=
true
,
run_malloc
=
true
;
...
...
@@ -67,7 +67,7 @@ int main(int argc, char *argv[])
talloc_free
(
p1
);
}
count
+=
(
1
+
200
)
*
LOOPS
;
}
while
(
time_
sub
(
time_now
(),
tv
)
.
tv_sec
<
5
);
}
while
(
time_
between
(
time_now
(),
tv
).
ts
.
tv_sec
<
5
);
fprintf
(
stderr
,
"talloc: %.0f ops/sec
\n
"
,
count
/
5
.
0
);
...
...
@@ -90,7 +90,7 @@ after_talloc:
tal_free
(
p1
);
}
count
+=
(
1
+
200
)
*
LOOPS
;
}
while
(
time_
sub
(
time_now
(),
tv
)
.
tv_sec
<
5
);
}
while
(
time_
between
(
time_now
(),
tv
).
ts
.
tv_sec
<
5
);
fprintf
(
stderr
,
"tal: %.0f ops/sec
\n
"
,
count
/
5
.
0
);
tal_free
(
ctx
);
...
...
@@ -115,7 +115,7 @@ after_tal:
free
(
p1
);
}
count
+=
(
1
+
200
)
*
LOOPS
;
}
while
(
time_
sub
(
time_now
(),
tv
)
.
tv_sec
<
5
);
}
while
(
time_
between
(
time_now
(),
tv
).
ts
.
tv_sec
<
5
);
fprintf
(
stderr
,
"malloc: %.0f ops/sec
\n
"
,
count
/
5
.
0
);
after_malloc:
...
...
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment