From 661b54aa0173a34097c7e8ea2ca5e23b1cff40b1 Mon Sep 17 00:00:00 2001 From: ScottPJones Date: Wed, 8 Jun 2016 23:27:59 -0400 Subject: [PATCH] Improve performance of == for String even further --- base/strings/basic.jl | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/base/strings/basic.jl b/base/strings/basic.jl index ca51ae365708c..a95050a24e8ca 100644 --- a/base/strings/basic.jl +++ b/base/strings/basic.jl @@ -128,7 +128,9 @@ isless(a::AbstractString, b::AbstractString) = cmp(a,b) < 0 cmp(a::String, b::String) = lexcmp(a.data, b.data) cmp(a::Symbol, b::Symbol) = Int(sign(ccall(:strcmp, Int32, (Cstring, Cstring), a, b))) -==(a::String, b::String) = length(a.data) == length(b.data) && cmp(a,b) == 0 +==(a::String, b::String) = + (len = length(a.data)) == length(b.data) && + ccall(:memcmp, Int32, (Ptr{UInt8}, Ptr{UInt8}, UInt), a.data, b.data, len) == 0 isless(a::Symbol, b::Symbol) = cmp(a,b) < 0 ## Generic validation functions ##