Mercurial > prosody-hg
comparison util/paths.lua @ 11183:2ac63715ef6f
util.paths: Optimize path joining with few arguments
A casual search suggests that the majority of paths.join() calls involve
only two arguments. This saves the creation of a table for up to 3
arguments.
Looks like 3x faster for 3 arguments or less, 5% slower when it uses the
array to concatenate.
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Sun, 11 Oct 2020 23:04:13 +0200 |
| parents | 0971694b30a8 |
| children | de95e133af8e |
comparison
equal
deleted
inserted
replaced
| 11182:bab8d01e139a | 11183:2ac63715ef6f |
|---|---|
| 35 return "%"..c; | 35 return "%"..c; |
| 36 end | 36 end |
| 37 end).."$"; | 37 end).."$"; |
| 38 end | 38 end |
| 39 | 39 |
| 40 function path_util.join(...) | 40 function path_util.join(a, b, c, ...) -- (... : string) --> string |
| 41 return t_concat({...}, path_sep); | 41 -- Optimization: Avoid creating table for most uses |
| 42 if b then | |
| 43 if c then | |
| 44 if ... then | |
| 45 return t_concat({a,b,c,...}, path_sep); | |
| 46 end | |
| 47 return a..path_sep..b..path_sep..c; | |
| 48 end | |
| 49 return a..path_sep..b; | |
| 50 end | |
| 51 return a; | |
| 42 end | 52 end |
| 43 | 53 |
| 44 function path_util.complement_lua_path(installer_plugin_path) | 54 function path_util.complement_lua_path(installer_plugin_path) |
| 45 -- Checking for duplicates | 55 -- Checking for duplicates |
| 46 -- The commands using luarocks need the path to the directory that has the /share and /lib folders. | 56 -- The commands using luarocks need the path to the directory that has the /share and /lib folders. |
