在 kdb 中使用 floor 函数而不是 lower 函数将 string/symbol 转换为小写是否高效
Is it performant to use floor function instead of lower function to convert string/symbol to lower case in kdb
由于 lower(with certain condition) 和 floor 这两个函数在内部使用相同的 k 运算符,所以我尝试使用 floor 函数而不是 lower 函数将 string/symbol 转换为小写,测试结果很有启发性.
测试结果清楚地表明,与低层相比,底层的性能更高。
q)\t:10 floor 100000 4#.Q.A
61
q)\t:10 lower 100000 4#.Q.A
941
q)\t:100 lower 100000 4#.Q.A
9421
q)\t:100 floor 100000 4#.Q.A
568
q)\t:10 floor 100000 4#`$'.Q.A
170
q)\t:10 lower 100000 4#`$'.Q.A
1063
实际上,是否beneficial/optimum使用floor函数而不是lower函数将string/symbol转换为小写?
lower
涵盖的范围比 floor
多 cases/scenarios,因此它更全面。例如,floor
不适用于枚举
q)e:`s?`AbC`DEf`gh`I
q)e
`s$`AbC`DEf`gh`I
q)type e
20h
q)lower e
`abc`def`gh`i
q)floor e
'type
[0] floor e
^
所以你不能在 historical/on-disk 符号上使用 floor。但是,如果您知道您只会在内存数据上使用它,那么是的,floor 会更快,因为它不需要 lower
所需的所有检查
由于 lower(with certain condition) 和 floor 这两个函数在内部使用相同的 k 运算符,所以我尝试使用 floor 函数而不是 lower 函数将 string/symbol 转换为小写,测试结果很有启发性.
测试结果清楚地表明,与低层相比,底层的性能更高。
q)\t:10 floor 100000 4#.Q.A
61
q)\t:10 lower 100000 4#.Q.A
941
q)\t:100 lower 100000 4#.Q.A
9421
q)\t:100 floor 100000 4#.Q.A
568
q)\t:10 floor 100000 4#`$'.Q.A
170
q)\t:10 lower 100000 4#`$'.Q.A
1063
实际上,是否beneficial/optimum使用floor函数而不是lower函数将string/symbol转换为小写?
lower
涵盖的范围比 floor
多 cases/scenarios,因此它更全面。例如,floor
不适用于枚举
q)e:`s?`AbC`DEf`gh`I
q)e
`s$`AbC`DEf`gh`I
q)type e
20h
q)lower e
`abc`def`gh`i
q)floor e
'type
[0] floor e
^
所以你不能在 historical/on-disk 符号上使用 floor。但是,如果您知道您只会在内存数据上使用它,那么是的,floor 会更快,因为它不需要 lower
所需的所有检查