mirror of
https://github.com/RGBCube/nu_scripts
synced 2025-08-01 06:37:46 +00:00
add turtle benchmark and reorganize (#259)
This commit is contained in:
parent
7d5c2f0a2e
commit
0ea59f4eaa
8 changed files with 20 additions and 0 deletions
153
benchmarks/gradient_benchmark_no_check.nu
Normal file
153
benchmarks/gradient_benchmark_no_check.nu
Normal file
|
@ -0,0 +1,153 @@
|
|||
# Kubouch wrote this on/around 01/26/2022
|
||||
|
||||
def iter_inc [incr mult iter] {
|
||||
$incr + $mult * $iter
|
||||
}
|
||||
|
||||
#let is_release = input "Did you compile in a release mode? y/n "
|
||||
let is_release = "y"
|
||||
|
||||
if ($is_release | str downcase | str trim) == "y" {
|
||||
|
||||
$"running test 0 at (date now | date format '%Y-%m-%d %H:%M:%S.%3f')"
|
||||
# 0. this has wrong output
|
||||
let 0 = (seq 10 | benchmark {
|
||||
let height = 40
|
||||
let width = 160
|
||||
let stamp = 'Nu'
|
||||
seq 0 $height | each { |row|
|
||||
let row_data = (seq 0 $width | each { |col|
|
||||
let fgcolor = (iter_inc 2 2 $col)
|
||||
if $fgcolor > 200 && $fgcolor < 210 {
|
||||
$"(ansi -e '48;2;0;0;')($fgcolor)m($stamp)(ansi -e '0m')"
|
||||
} else {
|
||||
$"(ansi -e '48;2;0;0;')($fgcolor)m(char sp)(ansi -e '0m')"
|
||||
}
|
||||
} | str collect)
|
||||
$"($row_data)(char newline)"
|
||||
} | str collect
|
||||
} | math avg)
|
||||
|
||||
|
||||
$"running test 1 at (date now | date format '%Y-%m-%d %H:%M:%S.%3f')"
|
||||
# 1. Fixed newline to fix the output (char cr)
|
||||
let 1 = (seq 10 | benchmark {
|
||||
let height = 40
|
||||
let width = 160
|
||||
let stamp = 'Nu'
|
||||
seq 0 $height | each { |row|
|
||||
let row_data = (seq 0 $width | each { |col|
|
||||
let fgcolor = (iter_inc 2 2 $col)
|
||||
if $fgcolor > 200 && $fgcolor < 210 {
|
||||
$"(ansi -e '48;2;0;0;')($fgcolor)m($stamp)(ansi -e '0m')"
|
||||
} else {
|
||||
$"(ansi -e '48;2;0;0;')($fgcolor)m(char sp)(ansi -e '0m')"
|
||||
}
|
||||
} | str collect)
|
||||
$"($row_data)(char cr)"
|
||||
} | str collect
|
||||
} | math avg)
|
||||
|
||||
$"running test 2 at (date now | date format '%Y-%m-%d %H:%M:%S.%3f')"
|
||||
# 2. Replace (char sp) with just space
|
||||
let 2 = (seq 10 | benchmark {
|
||||
let height = 40
|
||||
let width = 160
|
||||
let stamp = 'Nu'
|
||||
seq 0 $height | each { |row|
|
||||
let row_data = (seq 0 $width | each { |col|
|
||||
let fgcolor = (iter_inc 2 2 $col)
|
||||
if $fgcolor > 200 && $fgcolor < 210 {
|
||||
$"(ansi -e '48;2;0;0;')($fgcolor)m($stamp)(ansi -e '0m')"
|
||||
} else {
|
||||
$"(ansi -e '48;2;0;0;')($fgcolor)m (ansi -e '0m')"
|
||||
}
|
||||
} | str collect)
|
||||
$"($row_data)(char cr)"
|
||||
} | str collect
|
||||
} | math avg)
|
||||
|
||||
$"running test 3 at (date now | date format '%Y-%m-%d %H:%M:%S.%3f')"
|
||||
# 3. Precompute (ansi -e '48;2;0;0;') and (ansi -e '0m') -- seems to be slower
|
||||
let 3 = (seq 10 | benchmark {
|
||||
let height = 40
|
||||
let width = 160
|
||||
let stamp = 'Nu'
|
||||
let ansi1 = ansi -e '48;2;0;0;'
|
||||
let ansi2 = ansi -e '0m'
|
||||
seq 0 $height | each { |row|
|
||||
let row_data = (seq 0 $width | each { |col|
|
||||
let fgcolor = (iter_inc 2 2 $col)
|
||||
if $fgcolor > 200 && $fgcolor < 210 {
|
||||
$"($ansi1)($fgcolor)m($stamp)($ansi2)"
|
||||
} else {
|
||||
$"($ansi1)($fgcolor)m(char sp)($ansi2)"
|
||||
}
|
||||
} | str collect)
|
||||
$"($row_data)(char cr)"
|
||||
} | str collect
|
||||
} | math avg)
|
||||
|
||||
$"running test 4 at (date now | date format '%Y-%m-%d %H:%M:%S.%3f')"
|
||||
# 4. Inline iter_inc call
|
||||
let 4 = (seq 10 | benchmark {
|
||||
let height = 40
|
||||
let width = 160
|
||||
let stamp = 'Nu'
|
||||
seq 0 $height | each { |row|
|
||||
let row_data = (seq 0 $width | each { |col|
|
||||
let fgcolor = 2 + 2 * $col
|
||||
if $fgcolor > 200 && $fgcolor < 210 {
|
||||
$"(ansi -e '48;2;0;0;')($fgcolor)m($stamp)(ansi -e '0m')"
|
||||
} else {
|
||||
$"(ansi -e '48;2;0;0;')($fgcolor)m(char sp)(ansi -e '0m')"
|
||||
}
|
||||
} | str collect)
|
||||
$"($row_data)(char cr)"
|
||||
} | str collect
|
||||
} | math avg)
|
||||
|
||||
$"running test 5 at (date now | date format '%Y-%m-%d %H:%M:%S.%3f')"
|
||||
# 5. Combine (char sp) substitution and iter_inc inlining
|
||||
let 5 = (seq 10 | benchmark {
|
||||
let height = 40
|
||||
let width = 160
|
||||
let stamp = 'Nu'
|
||||
seq 0 $height | each { |row|
|
||||
let row_data = (seq 0 $width | each { |col|
|
||||
let fgcolor = 2 + 2 * $col
|
||||
if $fgcolor > 200 && $fgcolor < 210 {
|
||||
$"(ansi -e '48;2;0;0;')($fgcolor)m($stamp)(ansi -e '0m')"
|
||||
} else {
|
||||
$"(ansi -e '48;2;0;0;')($fgcolor)m (ansi -e '0m')"
|
||||
}
|
||||
} | str collect)
|
||||
$"($row_data)(char cr)"
|
||||
} | str collect
|
||||
} | math avg)
|
||||
|
||||
$"running test 6 at (date now | date format '%Y-%m-%d %H:%M:%S.%3f')"
|
||||
# 6. The above with par-each outer loop (using par-each anywhere else breaks the output)
|
||||
let 6 = (seq 10 | benchmark {
|
||||
let height = 40
|
||||
let width = 160
|
||||
let stamp = 'Nu'
|
||||
seq 0 $height | par-each { |row|
|
||||
let row_data = (seq 0 $width | each { |col|
|
||||
let fgcolor = 2 + 2 * $col
|
||||
if $fgcolor > 200 && $fgcolor < 210 {
|
||||
$"(ansi -e '48;2;0;0;')($fgcolor)m($stamp)(ansi -e '0m')"
|
||||
} else {
|
||||
$"(ansi -e '48;2;0;0;')($fgcolor)m (ansi -e '0m')"
|
||||
}
|
||||
} | str collect)
|
||||
$"($row_data)(char cr)"
|
||||
} | str collect
|
||||
} | math avg)
|
||||
|
||||
echo 'collating tests'
|
||||
[ $0 $1 $2 $3 $4 $5 $6 ]
|
||||
|
||||
} else {
|
||||
echo "Compile in a release mode!"
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue