mirror of
https://github.com/fumiama/sched.git
synced 2026-06-05 07:20:26 +08:00
init: add codes
This commit is contained in:
40
README.md
40
README.md
@@ -1,2 +1,42 @@
|
||||
# sched
|
||||
Simple Golang parallel scheduler.
|
||||
|
||||
## Usage
|
||||
### Add one to each element in arr
|
||||
```go
|
||||
arr := make([]uint8, 64*1024*1024) // 64M
|
||||
_, _ = NewTask(arr, func(_ int, x []byte) ([]byte, error) {
|
||||
for i := range x {
|
||||
arr[i]++
|
||||
}
|
||||
return arr, nil
|
||||
}, false, false).Collect(2*1024*1024, true, true) // 2M batch
|
||||
```
|
||||
### Get HTTP contents for earh URL
|
||||
```go
|
||||
contents, err := NewTask(urls, func(_ int, urls []string) ([]string, error) {
|
||||
for i, u := range url {
|
||||
str, err := ... // get content
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
urls[i] = str // overlap
|
||||
}
|
||||
return urls, nil // return result
|
||||
}, false, false).Collect(4, false, false) // 4 URLs as a group
|
||||
```
|
||||
|
||||
## Bechmark
|
||||
A simple self-incrasing process is performed on a 64M uint8 array.
|
||||
```c
|
||||
goos: darwin
|
||||
goarch: arm64
|
||||
pkg: github.com/fumiama/sched
|
||||
cpu: Apple M1
|
||||
BenchmarkSched/single-8 1000000000 0.02992 ns/op 2242952686132.55 MB/s 0 B/op 0 allocs/op
|
||||
BenchmarkSched/para512K-8 1000000000 0.02483 ns/op 2702751323377.81 MB/s 0 B/op 0 allocs/op
|
||||
BenchmarkSched/para1M-8 1000000000 0.02492 ns/op 2693026104055.06 MB/s 0 B/op 0 allocs/op
|
||||
BenchmarkSched/para2M-8 1000000000 0.02133 ns/op 3146490138908.33 MB/s 0 B/op 0 allocs/op
|
||||
PASS
|
||||
ok github.com/fumiama/sched 1.119s
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user