From 4b4565fdd68f2fb1ab839ab409963a19201df1d4 Mon Sep 17 00:00:00 2001 From: Mike Nolta Date: Wed, 5 Nov 2014 22:57:12 -0500 Subject: [PATCH] fix slow hash(::SubString{<:ByteString}) Cuts the #8826 vocab.jl benchmark in half. --- base/string.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base/string.jl b/base/string.jl index 111dd433aefd3..07100f2b1d3a4 100644 --- a/base/string.jl +++ b/base/string.jl @@ -661,7 +661,7 @@ const memhash_seed = UInt === UInt64 ? 0x71e729fd56419c81 : 0x56419c81 function hash{T<:ByteString}(s::Union(T,SubString{T}), h::UInt) h += memhash_seed - ccall(memhash, UInt, (Ptr{UInt8}, Csize_t, UInt32), s, sizeof(s), h % UInt32) + h + ccall(memhash, UInt, (Ptr{UInt8}, Csize_t, UInt32), pointer(s), sizeof(s), h % UInt32) + h end hash(s::AbstractString, h::UInt) = hash(bytestring(s), h)