annotate src/chan.go @ 62:a2c9a535cdd3

add watcher.go
author pyon@macmini
date Wed, 14 Oct 2020 21:30:04 +0900
parents 05bdd37e3000
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
38
05bdd37e3000 add channel-sample.
pyon@macmini
parents:
diff changeset
1 package main
05bdd37e3000 add channel-sample.
pyon@macmini
parents:
diff changeset
2
05bdd37e3000 add channel-sample.
pyon@macmini
parents:
diff changeset
3 import (
05bdd37e3000 add channel-sample.
pyon@macmini
parents:
diff changeset
4 "fmt"
05bdd37e3000 add channel-sample.
pyon@macmini
parents:
diff changeset
5 "time"
05bdd37e3000 add channel-sample.
pyon@macmini
parents:
diff changeset
6 )
05bdd37e3000 add channel-sample.
pyon@macmini
parents:
diff changeset
7
05bdd37e3000 add channel-sample.
pyon@macmini
parents:
diff changeset
8 func main() {
05bdd37e3000 add channel-sample.
pyon@macmini
parents:
diff changeset
9 fmt.Println("- Channel Test with Fibonacci -")
05bdd37e3000 add channel-sample.
pyon@macmini
parents:
diff changeset
10 var t time.Time
05bdd37e3000 add channel-sample.
pyon@macmini
parents:
diff changeset
11 n, nfib := 0, 0
05bdd37e3000 add channel-sample.
pyon@macmini
parents:
diff changeset
12
05bdd37e3000 add channel-sample.
pyon@macmini
parents:
diff changeset
13 n, t = 25, time.Now()
05bdd37e3000 add channel-sample.
pyon@macmini
parents:
diff changeset
14 nfib = fib(n)
05bdd37e3000 add channel-sample.
pyon@macmini
parents:
diff changeset
15 fmt.Printf("n=%d nfib=%d [%v]\n", n, nfib, time.Since(t))
05bdd37e3000 add channel-sample.
pyon@macmini
parents:
diff changeset
16
05bdd37e3000 add channel-sample.
pyon@macmini
parents:
diff changeset
17 n, t = 45, time.Now()
05bdd37e3000 add channel-sample.
pyon@macmini
parents:
diff changeset
18 nfib = fib(n)
05bdd37e3000 add channel-sample.
pyon@macmini
parents:
diff changeset
19 fmt.Printf("n=%d nfib=%d [%v]\n", n, nfib, time.Since(t))
05bdd37e3000 add channel-sample.
pyon@macmini
parents:
diff changeset
20
05bdd37e3000 add channel-sample.
pyon@macmini
parents:
diff changeset
21 fmt.Println()
05bdd37e3000 add channel-sample.
pyon@macmini
parents:
diff changeset
22 fmt.Println("- Channel Test with Fibonacci #2 -")
05bdd37e3000 add channel-sample.
pyon@macmini
parents:
diff changeset
23 ch1 := make(chan int)
05bdd37e3000 add channel-sample.
pyon@macmini
parents:
diff changeset
24 ch2 := make(chan int)
05bdd37e3000 add channel-sample.
pyon@macmini
parents:
diff changeset
25
05bdd37e3000 add channel-sample.
pyon@macmini
parents:
diff changeset
26 n, t = 45, time.Now()
05bdd37e3000 add channel-sample.
pyon@macmini
parents:
diff changeset
27 go func(n int) {
05bdd37e3000 add channel-sample.
pyon@macmini
parents:
diff changeset
28 nfib := fib(n)
05bdd37e3000 add channel-sample.
pyon@macmini
parents:
diff changeset
29 fmt.Printf("goroutine: n=%d nfib=%d [%v]\n", n, nfib, time.Since(t))
05bdd37e3000 add channel-sample.
pyon@macmini
parents:
diff changeset
30 ch1 <- nfib
05bdd37e3000 add channel-sample.
pyon@macmini
parents:
diff changeset
31 }(n)
05bdd37e3000 add channel-sample.
pyon@macmini
parents:
diff changeset
32
05bdd37e3000 add channel-sample.
pyon@macmini
parents:
diff changeset
33 n, t = 25, time.Now()
05bdd37e3000 add channel-sample.
pyon@macmini
parents:
diff changeset
34 go func(n int) {
05bdd37e3000 add channel-sample.
pyon@macmini
parents:
diff changeset
35 nfib := fib(n)
05bdd37e3000 add channel-sample.
pyon@macmini
parents:
diff changeset
36 fmt.Printf("goroutine: n=%d nfib=%d [%v]\n", n, nfib, time.Since(t))
05bdd37e3000 add channel-sample.
pyon@macmini
parents:
diff changeset
37 ch2 <- nfib
05bdd37e3000 add channel-sample.
pyon@macmini
parents:
diff changeset
38 }(n)
05bdd37e3000 add channel-sample.
pyon@macmini
parents:
diff changeset
39
05bdd37e3000 add channel-sample.
pyon@macmini
parents:
diff changeset
40 n, t = 35, time.Now()
05bdd37e3000 add channel-sample.
pyon@macmini
parents:
diff changeset
41 nfib = fib(n)
05bdd37e3000 add channel-sample.
pyon@macmini
parents:
diff changeset
42 fmt.Printf(" - : n=%d nfib=%d [%v]\n", n, nfib, time.Since(t))
05bdd37e3000 add channel-sample.
pyon@macmini
parents:
diff changeset
43
05bdd37e3000 add channel-sample.
pyon@macmini
parents:
diff changeset
44 <- ch1
05bdd37e3000 add channel-sample.
pyon@macmini
parents:
diff changeset
45 <- ch2
05bdd37e3000 add channel-sample.
pyon@macmini
parents:
diff changeset
46
05bdd37e3000 add channel-sample.
pyon@macmini
parents:
diff changeset
47 n, t = 5, time.Now()
05bdd37e3000 add channel-sample.
pyon@macmini
parents:
diff changeset
48 nfib = fib(n)
05bdd37e3000 add channel-sample.
pyon@macmini
parents:
diff changeset
49 fmt.Printf(" - : n=%d nfib=%d [%v]\n", n, nfib, time.Since(t))
05bdd37e3000 add channel-sample.
pyon@macmini
parents:
diff changeset
50
05bdd37e3000 add channel-sample.
pyon@macmini
parents:
diff changeset
51 fmt.Println("- End -")
05bdd37e3000 add channel-sample.
pyon@macmini
parents:
diff changeset
52 }
05bdd37e3000 add channel-sample.
pyon@macmini
parents:
diff changeset
53
05bdd37e3000 add channel-sample.
pyon@macmini
parents:
diff changeset
54 func fib(x int) int {
05bdd37e3000 add channel-sample.
pyon@macmini
parents:
diff changeset
55 if x < 2 {
05bdd37e3000 add channel-sample.
pyon@macmini
parents:
diff changeset
56 return x
05bdd37e3000 add channel-sample.
pyon@macmini
parents:
diff changeset
57 }
05bdd37e3000 add channel-sample.
pyon@macmini
parents:
diff changeset
58 return fib(x - 1) + fib(x - 2)
05bdd37e3000 add channel-sample.
pyon@macmini
parents:
diff changeset
59 }
05bdd37e3000 add channel-sample.
pyon@macmini
parents:
diff changeset
60