github.com/lmorg/murex@v0.0.0-20240217211045-e081c89cd4ef/benchmarks_test.go (about) 1 package main 2 3 import ( 4 "fmt" 5 "testing" 6 7 "github.com/lmorg/murex/lang" 8 ) 9 10 func BenchmarkAForeachN(b *testing.B) { 11 lang.InitEnv() 12 13 block := fmt.Sprintf(`a [1..%d] -> foreach i { out "iteration $i of %d" }`, b.N, b.N) 14 15 _, err := lang.ShellProcess.Fork(lang.F_NO_STDIN | lang.F_NO_STDOUT | lang.F_NO_STDERR).Execute([]rune(block)) 16 if err != nil { 17 b.Error(err.Error()) 18 } 19 } 20 21 func BenchmarkJaForeachN(b *testing.B) { 22 lang.InitEnv() 23 24 block := fmt.Sprintf(`ja [1..%d] -> foreach i { out "iteration $i of %d" }`, b.N, b.N) 25 26 _, err := lang.ShellProcess.Fork(lang.F_NO_STDIN | lang.F_NO_STDOUT | lang.F_NO_STDERR).Execute([]rune(block)) 27 if err != nil { 28 b.Error(err.Error()) 29 } 30 } 31 32 func BenchmarkAForeachForkN(b *testing.B) { 33 lang.InitEnv() 34 35 block := fmt.Sprintf(`a [1..%d] -> foreach i { exec printf "iteration $i of %d\n" }`, b.N, b.N) 36 37 _, err := lang.ShellProcess.Fork(lang.F_NO_STDIN | lang.F_NO_STDOUT | lang.F_NO_STDERR).Execute([]rune(block)) 38 if err != nil { 39 b.Error(err.Error()) 40 } 41 } 42 43 func BenchmarkCsvIndexNTimes(b *testing.B) { 44 lang.InitEnv() 45 46 block := []rune(`tout csv "murex,foo,bar\n1,2,3\na,b,c\nz,y,x\n" -> [ :foo ]`) 47 48 for i := 0; i < b.N; i++ { 49 _, err := lang.ShellProcess.Fork(lang.F_NO_STDIN | lang.F_NO_STDOUT | lang.F_NO_STDERR).Execute(block) 50 if err != nil { 51 b.Error(err.Error()) 52 } 53 } 54 } 55 56 func BenchmarkCsvForkNTimes(b *testing.B) { 57 lang.InitEnv() 58 59 block := []rune(`tout csv "murex,foo,bar\n1,2,3\na,b,c\nz,y,x\n" -> grep foo`) 60 61 for i := 0; i < b.N; i++ { 62 _, err := lang.ShellProcess.Fork(lang.F_NO_STDIN | lang.F_NO_STDOUT | lang.F_NO_STDERR).Execute(block) 63 if err != nil { 64 b.Error(err.Error()) 65 } 66 } 67 } 68 69 func BenchmarkForkPipelineNTimes(b *testing.B) { 70 lang.InitEnv() 71 72 block := []rune(`exec printf "the\nquick\nbrown\nfox\n" -> tr '[:lower:]' '[:upper:]' -> tr '[:upper:]' '[:lower:]'`) 73 74 for i := 0; i < b.N; i++ { 75 _, err := lang.ShellProcess.Fork(lang.F_NO_STDIN | lang.F_NO_STDOUT | lang.F_NO_STDERR).Execute(block) 76 if err != nil { 77 b.Error(err.Error()) 78 } 79 } 80 } 81 82 func BenchmarkMathLibsEqu(b *testing.B) { 83 lang.InitEnv() 84 85 block := fmt.Sprintf(`a [1..%d] -> foreach i { = 1 * %d }`, b.N, b.N) 86 87 _, err := lang.ShellProcess.Fork(lang.F_NO_STDIN | lang.F_NO_STDOUT | lang.F_NO_STDERR).Execute([]rune(block)) 88 if err != nil { 89 b.Error(err.Error()) 90 } 91 } 92 93 func BenchmarkMathLibsExpr(b *testing.B) { 94 lang.InitEnv() 95 96 block := fmt.Sprintf(`a [1..%d] -> foreach i { 1 * %d }`, b.N, b.N) 97 98 _, err := lang.ShellProcess.Fork(lang.F_NO_STDIN | lang.F_NO_STDOUT | lang.F_NO_STDERR).Execute([]rune(block)) 99 if err != nil { 100 b.Error(err.Error()) 101 } 102 }