go bytes, strings:比较测试不会修改输入对齐,

t9aqgxwy  于 6个月前  发布在  Go
关注(0)|答案(5)|浏览(58)

我无法看到任何测试来改变 Compare 参数的对齐方式。由于 Compare 大多数平台上都是用汇编编写的(在 internal/bytealg 中),我们应该检查它是否能在输入未对齐的情况下正常工作。

disho6za

disho6za1#

我对这个感兴趣。这需要修改bytes/compare_test.go文件,对吗?谢谢!

6pp0gazn

6pp0gazn2#

@LotusFenn 是的,bytes/compare_test.go 和 strings/compare_test.go。如果在每个文件中添加一个额外的简短测试,只需将输入对齐从0到16(包括)变化,那就太好了。谢谢!

olqngx59

olqngx593#

https://golang.org/cl/122536提到了这个问题:bytes: vary the input alignment to Compare argument in compare_test.go

wbrvyc0a

wbrvyc0a4#

@mundaym - strings中的Compare函数没有使用汇编,并且有一个简单的实现。

if a == b {
		return 0
	}
	if a < b {
		return -1
	}
	return +1

它甚至还有一条来自@rsc的注解 -

// NOTE(rsc): This function does NOT call the runtime cmpstring function,
	// because we do not want to provide any performance justification for
	// using strings.Compare. Basically no one should use strings.Compare.

你是否仍然想要测试未对齐的输入字符串/compare_test.go?

b4lqfgs4

b4lqfgs45#

@agnivade 很好的观点。不过,我认为这仍然值得一试。编译器可以在底层使用runtime.cmpstring或其他对齐敏感的向量代码进行替换(正如rsc在评论中暗示的那样)。

相关问题