]> Cypherpunks repositories - gostls13.git/commitdiff
simplify threadring slightly; slight speed improvement
authorRob Pike <r@golang.org>
Fri, 7 Aug 2009 20:30:20 +0000 (13:30 -0700)
committerRob Pike <r@golang.org>
Fri, 7 Aug 2009 20:30:20 +0000 (13:30 -0700)
R=rsc
DELTA=7  (3 added, 3 deleted, 1 changed)
OCL=32885
CL=32889

test/bench/threadring.go
test/bench/timing.log

index 55d9ad29da1fc544407a2f6e0286f07a15294bdd..ccd6e0c1664063f3d43787cedb75f254ed69db98 100644 (file)
@@ -39,7 +39,6 @@ import (
        "flag";
        "fmt";
        "os";
-       "time";
 )
 
 var n = flag.Int("n", 1000, "how many passes")
@@ -58,17 +57,15 @@ func f(i int, in <-chan int, out chan<- int) {
 }
 
 func main() {
-       flag.Parse(); 
+       flag.Parse();
 
        one := make(chan int);  // will be input to thread 1
        var in, out chan int = nil, one;
-       for i := 1; i <= Nthread-1; i++ { 
+       for i := 1; i <= Nthread-1; i++ {
                in, out = out, make(chan int);
-               go f(i, in, out); 
+               go f(i, in, out);
        }
        go f(Nthread, out, one);
        one <- *n;
-       for {
-               time.Sleep(100*1e9);    // wait for ring to run
-       }
+       <-make(chan int);       // hang until ring completes
 }
index 973c71c0b86c96c99562c086b18ec72577cb1edd..770b4642daad5b8e53391bd930c56b5382236a83 100644 (file)
@@ -120,3 +120,6 @@ threadring 50000000
        gccgo -O2 threadring.go 90.33u 459.95s 448.03r
        gc threadring   33.11u 0.00s 33.14r
        GOMAXPROCS=4 gc threadring      114.48u 226.65s 371.59r
+       # change wait code to do <-make(chan int) instead of time.Sleep
+       gc threadring   28.41u 0.01s 29.35r
+       GOMAXPROCS=4 gc threadring      112.59u 232.83s 384.72r