Skip to content

Commit a287734

Browse files
committed
---
yaml --- r: 6253 b: refs/heads/master c: fcdb313 h: refs/heads/master i: 6251: cdeac4d v: v3
1 parent 20efa9a commit a287734

File tree

2 files changed

+173
-19
lines changed

2 files changed

+173
-19
lines changed

[refs]

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
---
2-
refs/heads/master: 2385deaa0dcf2f3935e1c6a7d016ed25704ce063
2+
refs/heads/master: fcdb313bd5a37ee36247cc608d01387c7456657a

trunk/src/test/bench/task-perf-word-count.rs

+172-18
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,8 @@ import std::comm::port;
3030
import std::comm::recv;
3131
import std::comm::send;
3232

33-
fn map(filename: str, emit: map_reduce::putter) {
34-
let f = result::get(io::file_reader(filename));
33+
fn map(input: str, emit: map_reduce::putter) {
34+
let f = io::string_reader(input);
3535

3636

3737
while true {
@@ -67,7 +67,7 @@ mod map_reduce {
6767

6868
tag reduce_proto { emit_val(int); done; ref; release; }
6969

70-
fn start_mappers(ctrl: chan<ctrl_proto>, inputs: [str]) ->
70+
fn start_mappers(ctrl: chan<ctrl_proto>, -inputs: [str]) ->
7171
[joinable_task] {
7272
let tasks = [];
7373
for i: str in inputs {
@@ -137,7 +137,7 @@ mod map_reduce {
137137
reduce(key, bind get(p, ref_count, is_done));
138138
}
139139

140-
fn map_reduce(inputs: [str]) {
140+
fn map_reduce(-inputs: [str]) {
141141
let ctrl = port::<ctrl_proto>();
142142

143143
// This task becomes the master control task. It task::_spawns
@@ -147,9 +147,8 @@ mod map_reduce {
147147

148148
reducers = map::new_str_hash();
149149

150-
let tasks = start_mappers(chan(ctrl), inputs);
151-
152150
let num_mappers = vec::len(inputs) as int;
151+
let tasks = start_mappers(chan(ctrl), inputs);
153152

154153
while num_mappers > 0 {
155154
alt recv(ctrl) {
@@ -186,24 +185,20 @@ mod map_reduce {
186185
}
187186

188187
fn main(argv: [str]) {
189-
if vec::len(argv) < 2u {
190-
let out = io::stdout();
191-
192-
out.write_line(#fmt["Usage: %s <filename> ...", argv[0]]);
193-
194-
// TODO: run something just to make sure the code hasn't
195-
// broken yet. This is the unit test mode of this program.
196-
197-
ret;
198-
}
199-
200188
// We can get by with 8k stacks, and we'll probably exhaust our
201189
// address space otherwise.
202190
task::set_min_stack(8192u);
203191

192+
let inputs = if vec::len(argv) < 2u {
193+
[input1(), input2(), input3()]
194+
} else {
195+
vec::map({|f| result::get(io::read_whole_file_str(f)) },
196+
vec::slice(argv, 1u, vec::len(argv)))
197+
};
198+
204199
let start = time::precise_time_ns();
205200

206-
map_reduce::map_reduce(vec::slice(argv, 1u, vec::len(argv)));
201+
map_reduce::map_reduce(inputs);
207202
let stop = time::precise_time_ns();
208203

209204
let elapsed = stop - start;
@@ -309,3 +304,162 @@ fn is_alpha_upper(c: char) -> bool {
309304
fn is_alpha(c: char) -> bool { is_alpha_upper(c) || is_alpha_lower(c) }
310305

311306
fn is_word_char(c: char) -> bool { is_alpha(c) || is_digit(c) || c == '_' }
307+
308+
309+
310+
fn input1() -> str { " Lorem ipsum dolor sit amet, consectetur
311+
adipiscing elit. Vestibulum tempor erat a dui commodo congue. Proin ac
312+
imperdiet est. Nunc volutpat placerat justo, ac euismod nisl elementum
313+
et. Nam a eros eleifend dolor porttitor auctor a a felis. Maecenas dui
314+
odio, malesuada eget bibendum at, ultrices suscipit enim. Sed libero
315+
dolor, sagittis eget mattis quis, imperdiet quis diam. Praesent eu
316+
tristique nunc. Integer blandit commodo elementum. In eros lacus,
317+
pretium vel fermentum vitae, euismod ut nulla.
318+
319+
Cras eget magna tempor mauris gravida laoreet. Suspendisse venenatis
320+
volutpat molestie. Pellentesque suscipit nisl feugiat sem blandit
321+
venenatis. Mauris id odio nec est elementum congue sed id
322+
diam. Maecenas viverra, mi id aliquam commodo, ipsum dolor iaculis
323+
odio, sed fringilla neque ipsum quis orci. Pellentesque dui dolor,
324+
faucibus a rutrum sed, faucibus a mi. In eget sodales
325+
ipsum. Pellentesque sollicitudin dapibus diam, ac interdum tellus
326+
porta ac.
327+
328+
Donec ligula mi, sodales vel cursus a, dapibus ut sapien. In convallis
329+
tempor libero, id dapibus mi sodales quis. Suspendisse
330+
potenti. Vestibulum feugiat bibendum bibendum. Maecenas metus magna,
331+
consequat in mollis at, malesuada id sem. Donec interdum viverra enim
332+
nec ornare. Donec pellentesque neque magna.
333+
334+
Donec euismod, ante quis tempor pretium, leo lectus ornare arcu, sed
335+
porttitor nisl ipsum elementum lectus. Nam rhoncus dictum sapien sed
336+
tincidunt. Integer sit amet dui orci. Quisque lectus elit, dignissim
337+
eget mattis nec, cursus nec erat. Fusce vitae metus nulla, et mattis
338+
quam. Nullam sit amet diam augue. Nunc non ante eu enim lacinia
339+
condimentum ac eget lectus.
340+
341+
Aliquam ut pulvinar tellus. Vestibulum ante ipsum primis in faucibus
342+
orci luctus et ultrices posuere cubilia Curae; Pellentesque non urna
343+
urna. Nulla facilisi. Aenean in felis quis massa aliquam eleifend non
344+
sed libero. Proin sit amet iaculis urna. In hac habitasse platea
345+
dictumst. Aenean scelerisque aliquet dolor, sit amet viverra est
346+
laoreet nec. Curabitur non urna a augue rhoncus pulvinar. Integer
347+
placerat vehicula nisl sed egestas. Morbi iaculis diam at erat
348+
sollicitudin nec interdum libero tristique. " }
349+
350+
fn input2() -> str { " Lorem ipsum dolor sit amet, consectetur
351+
adipiscing elit. Proin enim nibh, scelerisque faucibus accumsan id,
352+
feugiat id ipsum. In luctus mauris a massa consequat dignissim. Donec
353+
sit amet sem urna. Nullam pellentesque accumsan mi, at convallis arcu
354+
pharetra in. Quisque euismod gravida nibh in rutrum. Phasellus laoreet
355+
elit porta augue molestie nec imperdiet quam venenatis. Maecenas et
356+
egestas arcu. Donec vulputate mauris enim. Aenean malesuada urna sed
357+
dui eleifend quis posuere massa malesuada. Proin varius fringilla
358+
feugiat. Donec mollis lorem sit amet ligula blandit quis fermentum dui
359+
eleifend. Fusce molestie sodales magna in mattis. Aenean imperdiet,
360+
elit sit amet accumsan vehicula, velit massa semper nibh, et varius
361+
justo sem ut orci. Sed et magna lectus. Vestibulum vehicula, tellus
362+
non dapibus mattis, libero ligula ullamcorper odio, in interdum odio
363+
sem at mi.
364+
365+
Donec ut rhoncus mi. Donec ullamcorper, sem nec laoreet ullamcorper,
366+
metus metus accumsan orci, ac luctus est velit a dolor. Donec eros
367+
lectus, facilisis ut volutpat sit amet, pellentesque eu
368+
velit. Praesent eget nibh et arcu vestibulum consequat. Pellentesque
369+
habitant morbi tristique senectus et netus et malesuada fames ac
370+
turpis egestas. Pellentesque lectus est, rhoncus ut cursus sit amet,
371+
hendrerit quis dui. Maecenas vel purus in tellus luctus semper vel non
372+
orci. Proin viverra, erat eget pretium ultrices, quam quam vulputate
373+
tortor, eu dapibus risus nunc ac ipsum. Vestibulum ante ipsum primis
374+
in faucibus orci luctus et ultrices posuere cubilia Curae; Ut aliquet
375+
augue volutpat arcu mattis ullamcorper. Quisque vulputate consectetur
376+
massa, quis cursus mauris lacinia vitae. Morbi id mi eu leo accumsan
377+
aliquet ac et arcu. Quisque risus nisi, rhoncus vulputate egestas sed,
378+
rhoncus quis risus. Sed semper odio sed nulla accumsan vitae auctor
379+
tortor mattis.
380+
381+
Vivamus vitae mauris turpis. Praesent consectetur mi non sem lacinia a
382+
cursus sapien gravida. Aenean viverra turpis sit amet ligula
383+
vestibulum a ornare nunc feugiat. Mauris et risus arcu. Cras dictum
384+
porta cursus. Donec tempus laoreet eros. Nam nec turpis non dui
385+
hendrerit laoreet eu ut ipsum. Nam in sem eget turpis lacinia euismod
386+
eu eget nulla.
387+
388+
Suspendisse at varius elit. Donec consectetur pharetra massa nec
389+
viverra. Cras vehicula lorem id sapien hendrerit tristique. Mauris
390+
vitae mi ipsum. Suspendisse feugiat commodo iaculis. Maecenas vitae
391+
dignissim nunc. Sed hendrerit, arcu et aliquet suscipit, urna quam
392+
fermentum eros, vel accumsan metus quam quis risus. Praesent id eros
393+
pulvinar tellus fringilla cursus. Sed nec vulputate ipsum. Suspendisse
394+
sagittis, magna vitae faucibus semper, nibh felis vehicula tortor, et
395+
molestie velit lorem ac massa.
396+
397+
Duis aliquam accumsan lobortis. Morbi interdum cursus risus, vel
398+
dapibus nisl fermentum sit amet. Etiam in mauris at lectus lacinia
399+
mollis. Proin pretium sem nibh, id scelerisque arcu. Mauris pretium
400+
adipiscing metus. Suspendisse quis convallis augue. Aliquam sed dui
401+
augue, vel tempor ligula. Suspendisse luctus velit quis urna suscipit
402+
sit amet ullamcorper nunc mollis. Praesent vitae velit justo. Donec
403+
quis risus felis. Nullam rutrum, odio non varius ornare, tortor odio
404+
posuere felis, eget accumsan sem sapien et nunc. Fusce mi neque,
405+
elementum non convallis eu, hendrerit id arcu. Morbi tempus tincidunt
406+
ullamcorper. Nullam blandit, diam quis sollicitudin tincidunt, elit
407+
justo varius lacus, aliquet luctus neque nibh quis turpis. Etiam massa
408+
sapien, tristique ut consectetur eu, elementum vel orci. " }
409+
410+
fn input3() -> str { " Lorem ipsum dolor sit amet, consectetur
411+
adipiscing elit. Pellentesque bibendum sapien ut magna fringilla
412+
mollis. Vivamus in neque non metus faucibus accumsan eu pretium
413+
nunc. Ut erat augue, pulvinar eget blandit nec, cursus quis
414+
ipsum. Aliquam eu ornare risus. Mauris ipsum tortor, posuere vel
415+
gravida ut, tincidunt eu nunc. Aenean pellentesque, justo eu aliquam
416+
condimentum, neque eros feugiat nibh, in dictum nisi augue euismod
417+
lectus. Nam fringilla placerat metus aliquam rutrum. Nullam dapibus
418+
vehicula ligula ut tempor. Aliquam vehicula, diam vitae fermentum
419+
aliquam, justo augue venenatis enim, porta euismod dolor libero in
420+
arcu. Sed sollicitudin dictum eros non ornare. Donec nec purus
421+
orci. Mauris euismod fringilla consequat. Praesent non erat quis risus
422+
dapibus semper ac adipiscing lorem. Aliquam pulvinar dapibus
423+
mollis. Donec fermentum sollicitudin metus, sit amet condimentum leo
424+
adipiscing a.
425+
426+
Vestibulum mi felis, commodo placerat rhoncus sed, feugiat tincidunt
427+
orci. Integer faucibus ornare placerat. Nam et odio massa. Suspendisse
428+
porttitor nunc quis mi mollis imperdiet. Ut ut neque ipsum, sit amet
429+
facilisis erat. Nam ac lacinia turpis. Vivamus ullamcorper iaculis
430+
odio, et euismod sem imperdiet non. Duis porta felis sit amet nunc
431+
venenatis eu vestibulum nisi scelerisque. Nullam luctus mollis nunc
432+
vel pulvinar. Nam lorem tellus, imperdiet sed sodales eu, auctor ut
433+
nunc.
434+
435+
Nulla at mauris at leo sagittis varius eu a elit. Etiam consequat,
436+
tellus ut sagittis porttitor, est justo convallis eros, quis suscipit
437+
justo tortor vitae sem. In in odio augue. Pellentesque habitant morbi
438+
tristique senectus et netus et malesuada fames ac turpis
439+
egestas. Nulla varius ornare ligula quis euismod. Maecenas lobortis
440+
sodales sapien a mattis. Nulla blandit lobortis lacus, ut lobortis
441+
neque dictum ut. Praesent semper laoreet nisl. Etiam arcu eros,
442+
pretium eget eleifend eu, condimentum quis leo. Donec imperdiet porta
443+
erat. Aenean tempor sapien ut arcu porta mollis. Duis ultrices commodo
444+
quam venenatis commodo.
445+
446+
Aliquam odio tellus, tincidunt nec condimentum pellentesque, semper
447+
eget magna. Nam et lacus urna. Pellentesque urna nisi, pharetra vitae
448+
dignissim non, scelerisque eu massa. Sed sapien neque, cursus a
449+
malesuada ut, porta et quam. Donec odio sapien, blandit non aliquam
450+
vel, lobortis quis ligula. Nullam fermentum velit nec quam ultrices et
451+
venenatis sapien congue. Pellentesque vitae nunc arcu. Nullam eget
452+
laoreet nulla. Curabitur dignissim convallis nunc sed blandit. Sed ac
453+
ipsum mi. Ut euismod tellus hendrerit arcu egestas sollicitudin. Nam
454+
eget laoreet ipsum. Morbi sed nulla odio, at volutpat ante. Vivamus
455+
elementum dictum gravida.
456+
457+
Phasellus diam nisi, ullamcorper et placerat non, ultrices ut
458+
lectus. Etiam tincidunt scelerisque imperdiet. Quisque pretium pretium
459+
urna quis cursus. Sed sit amet velit sem. Maecenas eu orci et leo
460+
ultricies dictum. Mauris pellentesque ante a purus gravida
461+
convallis. Integer non tellus ante. Nulla hendrerit lobortis augue sit
462+
amet vulputate. Donec cursus hendrerit diam convallis
463+
luctus. Curabitur ipsum mauris, fermentum quis tincidunt ac, laoreet
464+
sollicitudin sapien. Fusce velit urna, gravida non pulvinar eu, tempor
465+
id nunc. " }

0 commit comments

Comments
 (0)