Anonymous avatar Anonymous committed 38f30b1

Subarray.to_string optimizations

Comments (0)

Files changed (1)

     s
 ;
 
+value rec to_string_loop arr str sub_ofs str_ofs left =
+  if left = 0
+  then
+    str
+  else
+    ( str.[str_ofs] := arr.(sub_ofs)
+    ; to_string_loop arr str (sub_ofs + 1) (str_ofs + 1) (left - 1)
+    )
+;
+
 value to_string s =
-  let r = String.create s.len
-  and i = ref 0 in
-  ( fold L
-      (fun () c ->
-         ( r.[i.val] := c
-         ; incr i
-         )
-      )
-      ()
-      s
-  ; r
-  )
+  to_string_loop s.arr (String.make s.len '\x00') s.ofs 0 s.len
 ;
 
 value append_to_list_rev s lst =
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.