# HG changeset patch # User Kim Alvefur # Date 1602450253 -7200 # Node ID 2ac63715ef6f83f23db3818dd2f149c9f0718ad0 # Parent bab8d01e139a3dbde5f3b5d56ad3cfd9682e397c 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. diff -r bab8d01e139a -r 2ac63715ef6f util/paths.lua --- a/util/paths.lua Sat Oct 17 19:24:44 2020 +0200 +++ b/util/paths.lua Sun Oct 11 23:04:13 2020 +0200 @@ -37,8 +37,18 @@ end).."$"; end -function path_util.join(...) - return t_concat({...}, path_sep); +function path_util.join(a, b, c, ...) -- (... : string) --> string + -- Optimization: Avoid creating table for most uses + if b then + if c then + if ... then + return t_concat({a,b,c,...}, path_sep); + end + return a..path_sep..b..path_sep..c; + end + return a..path_sep..b; + end + return a; end function path_util.complement_lua_path(installer_plugin_path)