| /* |
| * Licensed to the Apache Software Foundation (ASF) under one or more |
| * contributor license agreements. See the NOTICE file distributed with |
| * this work for additional information regarding copyright ownership. |
| * The ASF licenses this file to You under the Apache License, Version 2.0 |
| * (the "License"); you may not use this file except in compliance with |
| * the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| package main |
| |
| import ( |
| "fmt" |
| "github.com/apache/datasketches-go/hll" |
| "os" |
| ) |
| |
| var ( |
| jobs = map[string]JobProfile{ |
| "distinct_count_accuracy_profile": NewDistinctCountAccuracyProfile( |
| distinctCountJobConfigType{ |
| lgK: 11, |
| |
| lgMinU: 0, |
| lgMaxU: 20, |
| uppo: 16, |
| |
| lgMinT: 8, |
| lgMaxT: 20, |
| tppo: 1, |
| |
| lgQK: 12, |
| interData: true, |
| }, |
| hll.TgtHllTypeHll8, |
| ), |
| "distinct_count_merge_accuracy_profile": NewDistinctCountMergeAccuracyProfile( |
| distinctCountJobConfigType{ |
| lgK: 12, |
| numTrials: 100, |
| numSketches: 8192, |
| distinctKeysPerSketch: 32768, |
| }, |
| hll.TgtHllTypeHll8, |
| ), |
| "distinct_count_merge_speed_profile": NewDistinctCountMergeSpeedProfile( |
| distinctCountJobConfigType{ |
| minLgK: 10, |
| maxLgK: 21, |
| lgMinT: 11, |
| lgMaxT: 11, |
| lgDeltaU: 2, |
| serDe: true, |
| }, |
| hll.TgtHllTypeHll8, |
| ), |
| "distinct_count_serde_profile": NewDistinctCountSerDeProfile( |
| distinctCountJobConfigType{ |
| lgMinU: 0, |
| lgMaxU: 20, |
| uppo: 2, |
| |
| lgMaxT: 16, |
| lgMinT: 7, |
| |
| lgMinBpU: 4, |
| lgMaxBpU: 20, |
| |
| lgK: 12, |
| compact: false, |
| }, |
| hll.TgtHllTypeHll8, |
| ), |
| "frequency_long_speed_profile": NewFrequencyLongSpeedProfile( |
| frequencyJobConfigType{ |
| k: 1024, |
| zipfRange: 8192, |
| zipfExponent: 1.1, |
| |
| lgMin: 0, |
| lgMax: 23, |
| PPO: 16, |
| |
| lgMaxTrials: 16, |
| lgMinTrials: 8, |
| }, |
| ), |
| } |
| ) |
| |
| func usage() { |
| fmt.Println("Usage: go run main.go <job>") |
| fmt.Println("Available jobs:") |
| for job := range jobs { |
| fmt.Println(fmt.Sprintf("\t%s", job)) |
| } |
| os.Exit(1) |
| } |
| |
| func main() { |
| if len(os.Args) < 2 || os.Args[1] == "-h" || os.Args[1] == "--help" { |
| usage() |
| } |
| |
| job, ok := jobs[os.Args[1]] |
| if !ok { |
| usage() |
| } |
| |
| job.run() |
| } |