From: Lucas Bajolet Date: Tue, 17 Nov 2015 21:05:14 +0000 (-0500) Subject: lib/core: Perfize < for FlatString which caused a lot of unneccessary boxings X-Git-Tag: v0.8~82^2~2 X-Git-Url: http://nitlanguage.org lib/core: Perfize < for FlatString which caused a lot of unneccessary boxings Signed-off-by: Lucas Bajolet --- diff --git a/lib/core/text/flat.nit b/lib/core/text/flat.nit index fbe142f..cd8523c 100644 --- a/lib/core/text/flat.nit +++ b/lib/core/text/flat.nit @@ -443,25 +443,28 @@ class FlatString if self.object_id == other.object_id then return false - var my_length = self._bytelen - var its_length = other._bytelen + var myits = _items + var itsits = other._items - var max = if my_length < its_length then my_length else its_length + var mbt = _bytelen + var obt = other.bytelen - var myits = self.bytes - var itsits = other.bytes + var minln = if mbt < obt then mbt else obt + var mst = _first_byte + var ost = other.first_byte - for i in [0 .. max[ do - var my_curr_char = myits[i] - var its_curr_char = itsits[i] + for i in [0 .. minln[ do + var my_curr_char = myits[mst] + var its_curr_char = itsits[ost] - if my_curr_char != its_curr_char then - if my_curr_char < its_curr_char then return true - return false - end + if my_curr_char > its_curr_char then return false + if my_curr_char < its_curr_char then return true + + mst += 1 + ost += 1 end - return my_length < its_length + return mbt < obt end redef fun +(o) do