Initial project import
This commit is contained in:
commit
23f2d29e32
11957 files changed
+1754577
No files matched your search
@@ -0,0 +1,40 @@
|
||||
import encoding.csv
|
||||
import flag
|
||||
import os
|
||||
import rand
|
||||
|
||||
struct CityMean {
|
||||
city string
|
||||
mean f64
|
||||
}
|
||||
|
||||
fn main() {
|
||||
mut fp := flag.new_flag_parser(os.args)
|
||||
fp.version('1brc sample generator v1.0.0')
|
||||
fp.skip_executable()
|
||||
fp.application('Sample generator for 1 billion rows challenge')
|
||||
fp.description('The 1 billion rows challenge solved in V.\nFor details, see https://www.morling.dev/blog/one-billion-row-challenge/')
|
||||
input_file := fp.string('city-file', `i`, 'cities.txt',
|
||||
'Path to input file with cities and means list')
|
||||
fp.limit_free_args_to_exactly(1)!
|
||||
sample_count := fp.remaining_parameters()[0].u64()
|
||||
|
||||
content := os.read_file(input_file) or { panic(err) }
|
||||
mut reader := csv.new_reader(content, csv.ReaderConfig{ delimiter: `,` })
|
||||
mut means := []CityMean{}
|
||||
for {
|
||||
rec := reader.read() or { break }
|
||||
means << CityMean{
|
||||
city: rec[0]
|
||||
mean: rec[1].f64()
|
||||
}
|
||||
}
|
||||
|
||||
for _ in 0 .. sample_count / 2 {
|
||||
mut city := rand.intn(means.len)!
|
||||
m1, m2 := rand.normal_pair(mu: means[city].mean, sigma: 10)!
|
||||
println('${means[city].city};${m1:.1f}')
|
||||
city = rand.intn(means.len)!
|
||||
println('${means[city].city};${m2:.1f}')
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user