From 5af17a8f7aeac7c37d9f58c6048d0a6a2469e8a6 Mon Sep 17 00:00:00 2001 From: ygrek Date: Sun, 5 Sep 2010 11:53:37 +0300 Subject: [PATCH] DC: fix performance problem when creating filelist Occurs when filelist contains charactes outside of character set chosen for DC and DcProtocol.utf_to_dc falls back to slow char-by-char encoding which allocates lots of garbage. Fix by encoding each filename separately - i.e. triggering slow encoding less often and for smaller chunks. --- src/networks/direct_connect/dcShared.ml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/networks/direct_connect/dcShared.ml b/src/networks/direct_connect/dcShared.ml index 0307bfe6..0bcb5a72 100644 --- a/src/networks/direct_connect/dcShared.ml +++ b/src/networks/direct_connect/dcShared.ml @@ -59,14 +59,14 @@ let make_mylist () = if dirname = "" then ntabs else begin buf_tabs buf ntabs; let dir = dirname in - Printf.bprintf buf "%s\r\n" dir; + Printf.bprintf buf "%s\r\n" (DcProtocol.utf_to_dc dir); ntabs+1 end in List.iter (fun dcsh -> buf_tabs buf ntabs; let fname = Filename2.basename dcsh.dc_shared_codedname in - Printf.bprintf buf "%s|%Ld\r\n" fname dcsh.dc_shared_size + Printf.bprintf buf "%s|%Ld\r\n" (DcProtocol.utf_to_dc fname) dcsh.dc_shared_size ) node.shared_files; List.iter (fun (_, node) -> iter ntabs node @@ -134,7 +134,7 @@ let file_to_che3_to_string filename = (* Compress string to Che3 and write to file *) let string_to_che3_to_file str filename = (try - let s = Che3.compress (DcProtocol.utf_to_dc str) in + let s = Che3.compress str in let wlen = 4096 in (*let str = String.create slen in*) let slen = String.length s in -- 2.11.4.GIT