ঠিক একই রকম প্রশ্ন ছিল এবং এই থ্রেডের কয়েকটি পরামর্শ চেষ্টা করার সিদ্ধান্ত নিয়েছে।
আমি 3 ধরণের দেখার সর্বোত্তম এবং নিকৃষ্টতম পরিস্থিতিগুলির বেঞ্চমার্ক করেছি:
- একটি মানচিত্র ব্যবহার করে
- একটি তালিকা ব্যবহার করে
- একটি সুইচ স্টেটমেন্ট ব্যবহার করে
এখানে ফাংশন কোড:
func belongsToMap(lookup string) bool {
list := map[string]bool{
"900898296857": true,
"900898302052": true,
"900898296492": true,
"900898296850": true,
"900898296703": true,
"900898296633": true,
"900898296613": true,
"900898296615": true,
"900898296620": true,
"900898296636": true,
}
if _, ok := list[lookup]; ok {
return true
} else {
return false
}
}
func belongsToList(lookup string) bool {
list := []string{
"900898296857",
"900898302052",
"900898296492",
"900898296850",
"900898296703",
"900898296633",
"900898296613",
"900898296615",
"900898296620",
"900898296636",
}
for _, val := range list {
if val == lookup {
return true
}
}
return false
}
func belongsToSwitch(lookup string) bool {
switch lookup {
case
"900898296857",
"900898302052",
"900898296492",
"900898296850",
"900898296703",
"900898296633",
"900898296613",
"900898296615",
"900898296620",
"900898296636":
return true
}
return false
}
সেরা কেস দৃশ্যাবলী তালিকাগুলিতে প্রথম আইটেমটি বাছাই করে, সবচেয়ে খারাপ ক্ষেত্রে হ'ল অযৌক্তিক মান ব্যবহার করে।
ফলাফল এখানে:
BenchmarkBelongsToMapWorstCase-4 2000000 787 ns/op
BenchmarkBelongsToSwitchWorstCase-4 2000000000 0.35 ns/op
BenchmarkBelongsToListWorstCase-4 100000000 14.7 ns/op
BenchmarkBelongsToMapBestCase-4 2000000 683 ns/op
BenchmarkBelongsToSwitchBestCase-4 100000000 10.6 ns/op
BenchmarkBelongsToListBestCase-4 100000000 10.4 ns/op
স্যুইচটি সমস্তভাবে জিততে পারে, সবচেয়ে খারাপ ক্ষেত্রে সেরা কেসের চেয়ে দ্রুততম হয়। মানচিত্রগুলি সবচেয়ে খারাপ এবং তালিকাটি স্যুইচ করার কাছাকাছি।
সুতরাং নৈতিকটি হ'ল: আপনার যদি একটি স্থিতিশীল, যুক্তিযুক্ত ছোট তালিকা থাকে তবে স্যুইচ স্টেটমেন্টটি যাওয়ার উপায়।