Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(6)

Side by Side Diff: src/third_party/computer_language_benchmarks_game/binarytrees.c

Issue 993003004: Delete flaky benchmark test (Closed) Base URL: https://chromium.googlesource.com/native_client/src/native_client.git@master
Patch Set: Fix dependencies. Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 /* The Computer Language Benchmarks Game
2 * http://benchmarksgame.alioth.debian.org/
3
4 contributed by Kevin Carson
5 compilation:
6 gcc -O3 -fomit-frame-pointer -funroll-loops -static binary-trees.c -lm
7 icc -O3 -ip -unroll -static binary-trees.c -lm
8 */
9
10 #include <malloc.h>
11 #include <math.h>
12 #include <stdio.h>
13 #include <stdlib.h>
14
15
16 typedef struct tn {
17 struct tn* left;
18 struct tn* right;
19 long item;
20 } treeNode;
21
22
23 treeNode* NewTreeNode(treeNode* left, treeNode* right, long item)
24 {
25 treeNode* new;
26
27 new = (treeNode*)malloc(sizeof(treeNode));
28
29 new->left = left;
30 new->right = right;
31 new->item = item;
32
33 return new;
34 } /* NewTreeNode() */
35
36
37 long ItemCheck(treeNode* tree)
38 {
39 if (tree->left == NULL)
40 return tree->item;
41 else
42 return tree->item + ItemCheck(tree->left) - ItemCheck(tree->right);
43 } /* ItemCheck() */
44
45
46 treeNode* BottomUpTree(long item, unsigned depth)
47 {
48 if (depth > 0)
49 return NewTreeNode
50 (
51 BottomUpTree(2 * item - 1, depth - 1),
52 BottomUpTree(2 * item, depth - 1),
53 item
54 );
55 else
56 return NewTreeNode(NULL, NULL, item);
57 } /* BottomUpTree() */
58
59
60 void DeleteTree(treeNode* tree)
61 {
62 if (tree->left != NULL)
63 {
64 DeleteTree(tree->left);
65 DeleteTree(tree->right);
66 }
67
68 free(tree);
69 } /* DeleteTree() */
70
71
72 int main(int argc, char* argv[])
73 {
74 unsigned N, depth, minDepth, maxDepth, stretchDepth;
75 treeNode *stretchTree, *longLivedTree, *tempTree;
76
77 N = atol(argv[1]);
78
79 minDepth = 4;
80
81 if ((minDepth + 2) > N)
82 maxDepth = minDepth + 2;
83 else
84 maxDepth = N;
85
86 stretchDepth = maxDepth + 1;
87
88 stretchTree = BottomUpTree(0, stretchDepth);
89 printf
90 (
91 "stretch tree of depth %u\t check: %li\n",
92 stretchDepth,
93 ItemCheck(stretchTree)
94 );
95
96 DeleteTree(stretchTree);
97
98 longLivedTree = BottomUpTree(0, maxDepth);
99
100 for (depth = minDepth; depth <= maxDepth; depth += 2)
101 {
102 long i, iterations, check;
103
104 iterations = pow(2, maxDepth - depth + minDepth);
105
106 check = 0;
107
108 for (i = 1; i <= iterations; i++)
109 {
110 tempTree = BottomUpTree(i, depth);
111 check += ItemCheck(tempTree);
112 DeleteTree(tempTree);
113
114 tempTree = BottomUpTree(-i, depth);
115 check += ItemCheck(tempTree);
116 DeleteTree(tempTree);
117 } /* for(i = 1...) */
118
119 printf
120 (
121 "%li\t trees of depth %u\t check: %li\n",
122 iterations * 2,
123 depth,
124 check
125 );
126 } /* for(depth = minDepth...) */
127
128 printf
129 (
130 "long lived tree of depth %u\t check: %li\n",
131 maxDepth,
132 ItemCheck(longLivedTree)
133 );
134
135 return 0;
136 } /* main() */
137
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698