go/src/os
Alex Brainman 39c8d2b7fa os: parse command line without shell32.dll
Go uses CommandLineToArgV from shell32.dll to parse command
line parameters. But shell32.dll is slow to load. Implement
Windows command line parsing in Go. This should make starting
Go programs faster.

I can see these speed ups for runtime.BenchmarkRunningGoProgram

on my Windows 7 amd64:
name                old time/op  new time/op  delta
RunningGoProgram-2  11.2ms ± 1%  10.4ms ± 2%  -6.63%  (p=0.000 n=9+10)

on my Windows XP 386:
name                old time/op  new time/op  delta
RunningGoProgram-2  19.0ms ± 3%  12.1ms ± 1%  -36.20%  (p=0.000 n=10+10)

on @egonelbre Windows 10 amd64:
name                old time/op  new time/op  delta
RunningGoProgram-8  17.0ms ± 1%  15.3ms ± 2%  -9.71%  (p=0.000 n=10+10)

This CL is based on CL 22932 by John Starks.

Fixes #15588.

Change-Id: Ib14be0206544d0d4492ca1f0d91fac968be52241
Reviewed-on: https://go-review.googlesource.com/37915
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
2017-03-24 00:53:03 +00:00
..
exec os: don't use waitid on Darwin 2017-03-01 02:02:40 +00:00
signal runtime: handle SIGPIPE in c-archive and c-shared programs 2017-02-03 20:07:36 +00:00
user os/user: fake Current on Android 2017-03-08 21:34:32 +00:00
dir.go os: consolidate files 2016-08-16 00:15:36 +00:00
dir_plan9.go
dir_unix.go os: use poller for file I/O 2017-02-15 19:31:55 +00:00
dir_windows.go os: use poller for file I/O 2017-02-15 19:31:55 +00:00
env.go os: make ExpandEnv recognize '-' as a special shell parameter 2016-08-21 18:32:57 +00:00
env_test.go syscall: Clearenv now unsets env vars on Windows 2016-11-14 00:04:03 +00:00
env_unix_test.go os: make ExpandEnv recognize '-' as a special shell parameter 2016-08-21 18:32:57 +00:00
error.go os: add ErrClosed, return for use of closed File 2016-10-24 16:41:29 +00:00
error_plan9.go os: delete code duplications in error files 2016-09-10 17:04:21 +00:00
error_posix.go os: use poller for file I/O 2017-02-15 19:31:55 +00:00
error_test.go os: add ErrClosed, return for use of closed File 2016-10-24 16:41:29 +00:00
error_unix.go os: delete code duplications in error files 2016-09-10 17:04:21 +00:00
error_unix_test.go
error_windows.go os: make IsExist report true on ERROR_DIR_NOT_EMPTY on Windows 2016-09-25 02:38:11 +00:00
error_windows_test.go os: make IsExist report true on ERROR_DIR_NOT_EMPTY on Windows 2016-09-25 02:38:11 +00:00
example_test.go os: add OpenFile example for appending data 2017-03-01 14:48:21 +00:00
exec.go os: consolidate files 2016-08-16 00:15:36 +00:00
exec_plan9.go
exec_posix.go
exec_unix.go os: on GNU/Linux use waitid to avoid wait/kill race 2016-06-10 18:10:14 +00:00
exec_windows.go os: parse command line without shell32.dll 2017-03-24 00:53:03 +00:00
executable.go os: add Executable() (string, error) 2016-11-07 22:34:48 +00:00
executable_darwin.go os: add Executable() (string, error) 2016-11-07 22:34:48 +00:00
executable_freebsd.go os: add Executable() (string, error) 2016-11-07 22:34:48 +00:00
executable_plan9.go os: add Executable() (string, error) 2016-11-07 22:34:48 +00:00
executable_procfs.go os: Executable can use /proc/self/exe on android 2016-11-29 00:24:22 +00:00
executable_solaris.go os: add Executable() (string, error) 2016-11-07 22:34:48 +00:00
executable_test.go os: add Executable() (string, error) 2016-11-07 22:34:48 +00:00
executable_windows.go os: add Executable() (string, error) 2016-11-07 22:34:48 +00:00
export_test.go
export_windows_test.go os: parse command line without shell32.dll 2017-03-24 00:53:03 +00:00
file.go os: use poller for file I/O 2017-02-15 19:31:55 +00:00
file_plan9.go os: use poller for file I/O 2017-02-15 19:31:55 +00:00
file_posix.go os: use poller for file I/O 2017-02-15 19:31:55 +00:00
file_unix.go os: use poller for file I/O 2017-02-15 19:31:55 +00:00
file_windows.go os: use poller for file I/O 2017-02-15 19:31:55 +00:00
getwd.go
getwd_darwin.go
os_test.go Revert "all: test adjustments for the iOS builder" 2017-03-04 00:01:14 +00:00
os_unix_test.go os: don't let File.Readdir return an empty slice and nil error 2016-08-29 23:59:42 +00:00
os_windows_test.go os: parse command line without shell32.dll 2017-03-24 00:53:03 +00:00
path.go
path_plan9.go
path_test.go os: use testenv.MustHaveSymlink to simplify symlink tests 2016-08-23 14:46:46 +00:00
path_unix.go os: consolidate files 2016-08-16 00:15:36 +00:00
path_windows.go os: must fixup path when 248 bytes long 2016-12-13 03:21:00 +00:00
path_windows_test.go os: on Windows, don't fix long paths that aren't long 2016-11-08 23:06:17 +00:00
pipe_bsd.go syscall, os: use pipe2 syscall on FreeBSD instead of pipe 2017-03-21 20:01:23 +00:00
pipe_freebsd.go syscall, os: fix FreeBSD 9 build 2017-03-21 22:37:27 +00:00
pipe_linux.go os: use poller for file I/O 2017-02-15 19:31:55 +00:00
pipe_test.go
proc.go
stat_darwin.go
stat_dragonfly.go
stat_freebsd.go
stat_linux.go
stat_nacl.go
stat_netbsd.go
stat_openbsd.go
stat_plan9.go os: consider only files from #M as regular on Plan 9 2016-10-26 16:18:00 +00:00
stat_solaris.go
stat_unix.go os: use poller for file I/O 2017-02-15 19:31:55 +00:00
stat_windows.go os: use poller for file I/O 2017-02-15 19:31:55 +00:00
sticky_bsd.go
sticky_notbsd.go
str.go
sys.go os: consolidate files 2016-08-16 00:15:36 +00:00
sys_bsd.go
sys_darwin.go os: remove incorrect detection of O_CLOEXEC flag on darwin 2017-02-18 16:14:15 +00:00
sys_freebsd.go
sys_linux.go
sys_nacl.go
sys_plan9.go
sys_solaris.go
sys_unix.go
sys_windows.go
types.go os: deduplicate File definition 2016-09-05 21:21:05 +00:00
types_plan9.go os: add ErrClosed, return for use of closed File 2016-10-24 16:41:29 +00:00
types_unix.go os: add ErrClosed, return for use of closed File 2016-10-24 16:41:29 +00:00
types_windows.go os: make Stdin.Stat() return ModeCharDevice if Stdin is console 2017-02-07 23:59:31 +00:00
wait_unimp.go os: don't use waitid on Darwin 2017-03-01 02:02:40 +00:00
wait_wait6.go os: use runtime.Keepalive for *Process values 2016-08-24 16:57:09 +00:00
wait_waitid.go os: don't use waitid on Darwin 2017-03-01 02:02:40 +00:00