userland: add archive tools and pinned GoAWK, esbuild, and QuickJS
This commit is contained in:
@@ -0,0 +1,9 @@
|
||||
import csv
|
||||
import sys
|
||||
|
||||
lines, fields = 0, 0
|
||||
for row in csv.reader(sys.stdin):
|
||||
lines += 1
|
||||
fields += len(row)
|
||||
|
||||
print(lines, fields)
|
||||
@@ -0,0 +1,27 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"bufio"
|
||||
"encoding/csv"
|
||||
"fmt"
|
||||
"io"
|
||||
"log"
|
||||
"os"
|
||||
)
|
||||
|
||||
func main() {
|
||||
reader := csv.NewReader(bufio.NewReader(os.Stdin))
|
||||
lines, fields := 0, 0
|
||||
for {
|
||||
row, err := reader.Read()
|
||||
if err == io.EOF {
|
||||
break
|
||||
}
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
lines++
|
||||
fields += len(row)
|
||||
}
|
||||
fmt.Println(lines, fields)
|
||||
}
|
||||
+48
@@ -0,0 +1,48 @@
|
||||
#!/bin/sh
|
||||
|
||||
set -e
|
||||
|
||||
echo ===== Writing 1GB - goawk
|
||||
time goawk -o csv 'BEGIN { for (i=0; i<3514073; i++) print i, "foo", "bob@example.com", "simple,quoted", "quoted string with \" in it", "0123456789", "9876543210", "The quick brown fox jumps over the lazy dog", "", "final field", i, "foo", "bob@example.com", "simple,quoted", "quoted string with \" in it", "0123456789", "9876543210", "The quick brown fox jumps over the lazy dog", "", "final field" }' >/dev/null
|
||||
time goawk -o csv 'BEGIN { for (i=0; i<3514073; i++) print i, "foo", "bob@example.com", "simple,quoted", "quoted string with \" in it", "0123456789", "9876543210", "The quick brown fox jumps over the lazy dog", "", "final field", i, "foo", "bob@example.com", "simple,quoted", "quoted string with \" in it", "0123456789", "9876543210", "The quick brown fox jumps over the lazy dog", "", "final field" }' >/dev/null
|
||||
time goawk -o csv 'BEGIN { for (i=0; i<3514073; i++) print i, "foo", "bob@example.com", "simple,quoted", "quoted string with \" in it", "0123456789", "9876543210", "The quick brown fox jumps over the lazy dog", "", "final field", i, "foo", "bob@example.com", "simple,quoted", "quoted string with \" in it", "0123456789", "9876543210", "The quick brown fox jumps over the lazy dog", "", "final field" }' >/dev/null
|
||||
|
||||
echo ===== Writing 1GB - frawk
|
||||
time frawk -o csv 'BEGIN { for (i=0; i<3514073; i++) print i, "foo", "bob@example.com", "simple,quoted", "quoted string with \" in it", "0123456789", "9876543210", "The quick brown fox jumps over the lazy dog", "", "final field", i, "foo", "bob@example.com", "simple,quoted", "quoted string with \" in it", "0123456789", "9876543210", "The quick brown fox jumps over the lazy dog", "", "final field"; }' >/dev/null
|
||||
time frawk -o csv 'BEGIN { for (i=0; i<3514073; i++) print i, "foo", "bob@example.com", "simple,quoted", "quoted string with \" in it", "0123456789", "9876543210", "The quick brown fox jumps over the lazy dog", "", "final field", i, "foo", "bob@example.com", "simple,quoted", "quoted string with \" in it", "0123456789", "9876543210", "The quick brown fox jumps over the lazy dog", "", "final field"; }' >/dev/null
|
||||
time frawk -o csv 'BEGIN { for (i=0; i<3514073; i++) print i, "foo", "bob@example.com", "simple,quoted", "quoted string with \" in it", "0123456789", "9876543210", "The quick brown fox jumps over the lazy dog", "", "final field", i, "foo", "bob@example.com", "simple,quoted", "quoted string with \" in it", "0123456789", "9876543210", "The quick brown fox jumps over the lazy dog", "", "final field"; }' >/dev/null
|
||||
|
||||
echo ===== Writing 1GB - Python
|
||||
time python3 write.py >/dev/null
|
||||
time python3 write.py >/dev/null
|
||||
time python3 write.py >/dev/null
|
||||
|
||||
echo ===== Writing 1GB - Go
|
||||
go build -o bin/write ./write
|
||||
time ./bin/write >/dev/null
|
||||
time ./bin/write >/dev/null
|
||||
time ./bin/write >/dev/null
|
||||
|
||||
|
||||
./bin/write >count.csv
|
||||
|
||||
echo ===== Reading 1GB - goawk
|
||||
time goawk -i csv '{ w+=NF } END { print NR, w }' <count.csv
|
||||
time goawk -i csv '{ w+=NF } END { print NR, w }' <count.csv
|
||||
time goawk -i csv '{ w+=NF } END { print NR, w }' <count.csv
|
||||
|
||||
echo ===== Reading 1GB - frawk
|
||||
time frawk -i csv '{ w+=NF } END { print NR, w }' <count.csv
|
||||
time frawk -i csv '{ w+=NF } END { print NR, w }' <count.csv
|
||||
time frawk -i csv '{ w+=NF } END { print NR, w }' <count.csv
|
||||
|
||||
echo ===== Reading 1GB - Python
|
||||
time python3 count.py <count.csv
|
||||
time python3 count.py <count.csv
|
||||
time python3 count.py <count.csv
|
||||
|
||||
echo ===== Reading 1GB - Go
|
||||
go build -o bin/count ./count
|
||||
time ./bin/count <count.csv
|
||||
time ./bin/count <count.csv
|
||||
time ./bin/count <count.csv
|
||||
@@ -0,0 +1,27 @@
|
||||
import csv
|
||||
import sys
|
||||
|
||||
writer = csv.writer(sys.stdout)
|
||||
for i in range(3514073): # will create a ~1GB file
|
||||
writer.writerow([
|
||||
i,
|
||||
"foo",
|
||||
"bob@example.com",
|
||||
"simple,quoted",
|
||||
"quoted string with \" in it",
|
||||
"0123456789",
|
||||
"9876543210",
|
||||
"The quick brown fox jumps over the lazy dog",
|
||||
"",
|
||||
"final field",
|
||||
i,
|
||||
"foo",
|
||||
"bob@example.com",
|
||||
"simple,quoted",
|
||||
"quoted string with \" in it",
|
||||
"0123456789",
|
||||
"9876543210",
|
||||
"The quick brown fox jumps over the lazy dog",
|
||||
"",
|
||||
"final field",
|
||||
])
|
||||
@@ -0,0 +1,43 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"encoding/csv"
|
||||
"log"
|
||||
"os"
|
||||
"strconv"
|
||||
)
|
||||
|
||||
func main() {
|
||||
writer := csv.NewWriter(os.Stdout)
|
||||
for i := 0; i < 3514073; i++ { // will create a ~1GB file
|
||||
err := writer.Write([]string{
|
||||
strconv.Itoa(i),
|
||||
"foo",
|
||||
"bob@example.com",
|
||||
"simple,quoted",
|
||||
"quoted string with \" in it",
|
||||
"0123456789",
|
||||
"9876543210",
|
||||
"The quick brown fox jumps over the lazy dog",
|
||||
"",
|
||||
"final field",
|
||||
strconv.Itoa(i),
|
||||
"foo",
|
||||
"bob@example.com",
|
||||
"simple,quoted",
|
||||
"quoted string with \" in it",
|
||||
"0123456789",
|
||||
"9876543210",
|
||||
"The quick brown fox jumps over the lazy dog",
|
||||
"",
|
||||
"final field",
|
||||
})
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
}
|
||||
writer.Flush()
|
||||
if writer.Error() != nil {
|
||||
log.Fatal(writer.Error())
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user