最近一直在搞 OJ,为了一个高效的、安全的沙盒编译环境操碎了心,终于实现了一个安全的且对运行影响非常低的沙盒,但是发现程序的编译效率非常的低。
最后通过查阅各种的博客,终于发现了一个非常高效的解决方案
万能头文件问题
在 OJ 的任务中,很多 ACMer 为了方便起见,经常使用万能头文件 bits/stdc++.h
。
当然这个头文件之前也惹过一次麻烦,就是著名的银川线上赛的 5 元学生机 OJ 事件,使用了 bits/stdc++.h
的编译效率非常低,因为这个头文件本身包含了太多的东西,罗列如下
(推荐直接点目录跳转到下一章)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428
| . /usr/include/x86_64-linux-gnu/c++/7/bits/stdc++.h .. /usr/include/c++/7/cassert ... /usr/include/x86_64-linux-gnu/c++/7/bits/c++config.h .... /usr/include/x86_64-linux-gnu/c++/7/bits/os_defines.h ..... /usr/include/features.h ...... /usr/include/x86_64-linux-gnu/sys/cdefs.h ....... /usr/include/x86_64-linux-gnu/bits/wordsize.h ....... /usr/include/x86_64-linux-gnu/bits/long-double.h ...... /usr/include/x86_64-linux-gnu/gnu/stubs.h ....... /usr/include/x86_64-linux-gnu/gnu/stubs-64.h .... /usr/include/x86_64-linux-gnu/c++/7/bits/cpu_defines.h ... /usr/include/assert.h .. /usr/include/c++/7/cctype ... /usr/include/ctype.h .... /usr/include/x86_64-linux-gnu/bits/types.h ..... /usr/include/x86_64-linux-gnu/bits/wordsize.h ..... /usr/include/x86_64-linux-gnu/bits/typesizes.h .... /usr/include/endian.h ..... /usr/include/x86_64-linux-gnu/bits/endian.h ..... /usr/include/x86_64-linux-gnu/bits/byteswap.h ...... /usr/include/x86_64-linux-gnu/bits/wordsize.h ...... /usr/include/x86_64-linux-gnu/bits/byteswap-16.h ..... /usr/include/x86_64-linux-gnu/bits/uintn-identity.h .... /usr/include/x86_64-linux-gnu/bits/types/locale_t.h ..... /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h .. /usr/include/c++/7/cerrno ... /usr/include/errno.h .... /usr/include/x86_64-linux-gnu/bits/errno.h ..... /usr/include/linux/errno.h ...... /usr/include/x86_64-linux-gnu/asm/errno.h ....... /usr/include/asm-generic/errno.h ........ /usr/include/asm-generic/errno-base.h .. /usr/include/c++/7/cfloat ... /usr/lib/gcc/x86_64-linux-gnu/7/include/float.h .. /usr/include/c++/7/ciso646 .. /usr/include/c++/7/climits ... /usr/lib/gcc/x86_64-linux-gnu/7/include-fixed/limits.h .... /usr/lib/gcc/x86_64-linux-gnu/7/include-fixed/syslimits.h ..... /usr/lib/gcc/x86_64-linux-gnu/7/include-fixed/limits.h ...... /usr/include/limits.h ....... /usr/include/x86_64-linux-gnu/bits/libc-header-start.h ....... /usr/include/x86_64-linux-gnu/bits/posix1_lim.h ........ /usr/include/x86_64-linux-gnu/bits/local_lim.h ......... /usr/include/linux/limits.h ....... /usr/include/x86_64-linux-gnu/bits/posix2_lim.h ....... /usr/include/x86_64-linux-gnu/bits/xopen_lim.h ........ /usr/include/x86_64-linux-gnu/bits/uio_lim.h .. /usr/include/c++/7/clocale ... /usr/include/locale.h .... /usr/lib/gcc/x86_64-linux-gnu/7/include/stddef.h .... /usr/include/x86_64-linux-gnu/bits/locale.h .. /usr/include/c++/7/cmath ... /usr/include/c++/7/bits/cpp_type_traits.h ... /usr/include/c++/7/ext/type_traits.h ... /usr/include/math.h .... /usr/include/x86_64-linux-gnu/bits/libc-header-start.h .... /usr/include/x86_64-linux-gnu/bits/math-vector.h ..... /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h .... /usr/include/x86_64-linux-gnu/bits/floatn.h ..... /usr/include/x86_64-linux-gnu/bits/floatn-common.h ...... /usr/include/x86_64-linux-gnu/bits/long-double.h .... /usr/include/x86_64-linux-gnu/bits/flt-eval-method.h .... /usr/include/x86_64-linux-gnu/bits/fp-logb.h .... /usr/include/x86_64-linux-gnu/bits/fp-fast.h .... /usr/include/x86_64-linux-gnu/bits/mathcalls-helper-functions.h .... /usr/include/x86_64-linux-gnu/bits/mathcalls.h .... /usr/include/x86_64-linux-gnu/bits/mathcalls-helper-functions.h .... /usr/include/x86_64-linux-gnu/bits/mathcalls.h .... /usr/include/x86_64-linux-gnu/bits/mathcalls-helper-functions.h .... /usr/include/x86_64-linux-gnu/bits/mathcalls.h .... /usr/include/x86_64-linux-gnu/bits/mathcalls.h .... /usr/include/x86_64-linux-gnu/bits/mathcalls.h .... /usr/include/x86_64-linux-gnu/bits/mathcalls-helper-functions.h .... /usr/include/x86_64-linux-gnu/bits/mathcalls.h .... /usr/include/x86_64-linux-gnu/bits/mathcalls.h .... /usr/include/x86_64-linux-gnu/bits/mathcalls.h .... /usr/include/x86_64-linux-gnu/bits/iscanonical.h ... /usr/include/c++/7/bits/std_abs.h .... /usr/include/stdlib.h ..... /usr/include/x86_64-linux-gnu/bits/libc-header-start.h ..... /usr/lib/gcc/x86_64-linux-gnu/7/include/stddef.h ..... /usr/include/x86_64-linux-gnu/bits/waitflags.h ..... /usr/include/x86_64-linux-gnu/bits/waitstatus.h ..... /usr/include/x86_64-linux-gnu/sys/types.h ...... /usr/include/x86_64-linux-gnu/bits/types/clock_t.h ...... /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h ...... /usr/include/x86_64-linux-gnu/bits/types/time_t.h ...... /usr/include/x86_64-linux-gnu/bits/types/timer_t.h ...... /usr/lib/gcc/x86_64-linux-gnu/7/include/stddef.h ...... /usr/include/x86_64-linux-gnu/bits/stdint-intn.h ...... /usr/include/x86_64-linux-gnu/sys/select.h ....... /usr/include/x86_64-linux-gnu/bits/select.h ........ /usr/include/x86_64-linux-gnu/bits/wordsize.h ....... /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h ........ /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h ....... /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h ....... /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h ...... /usr/include/x86_64-linux-gnu/sys/sysmacros.h ....... /usr/include/x86_64-linux-gnu/bits/sysmacros.h ...... /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h ....... /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h ........ /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h ......... /usr/include/x86_64-linux-gnu/bits/wordsize.h ..... /usr/include/alloca.h ...... /usr/lib/gcc/x86_64-linux-gnu/7/include/stddef.h ..... /usr/include/x86_64-linux-gnu/bits/stdlib-float.h .. /usr/include/c++/7/csetjmp ... /usr/include/setjmp.h .... /usr/include/x86_64-linux-gnu/bits/setjmp.h ..... /usr/include/x86_64-linux-gnu/bits/wordsize.h .. /usr/include/c++/7/csignal ... /usr/include/signal.h .... /usr/include/x86_64-linux-gnu/bits/signum.h ..... /usr/include/x86_64-linux-gnu/bits/signum-generic.h .... /usr/include/x86_64-linux-gnu/bits/types/sig_atomic_t.h .... /usr/include/x86_64-linux-gnu/bits/types/siginfo_t.h ..... /usr/include/x86_64-linux-gnu/bits/wordsize.h ..... /usr/include/x86_64-linux-gnu/bits/types/__sigval_t.h ..... /usr/include/x86_64-linux-gnu/bits/siginfo-arch.h .... /usr/include/x86_64-linux-gnu/bits/siginfo-consts.h ..... /usr/include/x86_64-linux-gnu/bits/siginfo-consts-arch.h .... /usr/include/x86_64-linux-gnu/bits/types/sigval_t.h .... /usr/include/x86_64-linux-gnu/bits/types/sigevent_t.h ..... /usr/include/x86_64-linux-gnu/bits/wordsize.h .... /usr/include/x86_64-linux-gnu/bits/sigevent-consts.h .... /usr/include/x86_64-linux-gnu/bits/sigaction.h .... /usr/include/x86_64-linux-gnu/bits/sigcontext.h .... /usr/lib/gcc/x86_64-linux-gnu/7/include/stddef.h .... /usr/include/x86_64-linux-gnu/bits/types/stack_t.h ..... /usr/lib/gcc/x86_64-linux-gnu/7/include/stddef.h .... /usr/include/x86_64-linux-gnu/sys/ucontext.h .... /usr/include/x86_64-linux-gnu/bits/sigstack.h .... /usr/include/x86_64-linux-gnu/bits/ss_flags.h .... /usr/include/x86_64-linux-gnu/bits/types/struct_sigstack.h .... /usr/include/x86_64-linux-gnu/bits/sigthread.h .. /usr/include/c++/7/cstdarg ... /usr/lib/gcc/x86_64-linux-gnu/7/include/stdarg.h .. /usr/include/c++/7/cstddef ... /usr/lib/gcc/x86_64-linux-gnu/7/include/stddef.h .. /usr/include/c++/7/cstdio ... /usr/include/stdio.h .... /usr/include/x86_64-linux-gnu/bits/libc-header-start.h .... /usr/lib/gcc/x86_64-linux-gnu/7/include/stddef.h .... /usr/include/x86_64-linux-gnu/bits/types/__FILE.h .... /usr/include/x86_64-linux-gnu/bits/types/FILE.h .... /usr/include/x86_64-linux-gnu/bits/libio.h ..... /usr/include/x86_64-linux-gnu/bits/_G_config.h ...... /usr/lib/gcc/x86_64-linux-gnu/7/include/stddef.h ...... /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h .... /usr/include/x86_64-linux-gnu/bits/stdio_lim.h .... /usr/include/x86_64-linux-gnu/bits/sys_errlist.h .. /usr/include/c++/7/cstdlib .. /usr/include/c++/7/cstring ... /usr/include/string.h .... /usr/include/x86_64-linux-gnu/bits/libc-header-start.h .... /usr/lib/gcc/x86_64-linux-gnu/7/include/stddef.h .... /usr/include/strings.h ..... /usr/lib/gcc/x86_64-linux-gnu/7/include/stddef.h .. /usr/include/c++/7/ctime ... /usr/include/time.h .... /usr/lib/gcc/x86_64-linux-gnu/7/include/stddef.h .... /usr/include/x86_64-linux-gnu/bits/time.h ..... /usr/include/x86_64-linux-gnu/bits/timex.h .... /usr/include/x86_64-linux-gnu/bits/types/struct_tm.h .... /usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h .. /usr/include/c++/7/ccomplex ... /usr/include/c++/7/complex .... /usr/include/c++/7/cmath .... /usr/include/c++/7/sstream ..... /usr/include/c++/7/istream ...... /usr/include/c++/7/ios ....... /usr/include/c++/7/iosfwd ........ /usr/include/c++/7/bits/stringfwd.h ......... /usr/include/c++/7/bits/memoryfwd.h ........ /usr/include/c++/7/bits/postypes.h ......... /usr/include/c++/7/cwchar .......... /usr/include/wchar.h ........... /usr/include/x86_64-linux-gnu/bits/libc-header-start.h ........... /usr/lib/gcc/x86_64-linux-gnu/7/include/stddef.h ........... /usr/include/x86_64-linux-gnu/bits/wchar.h ........... /usr/include/x86_64-linux-gnu/bits/types/wint_t.h ........... /usr/include/x86_64-linux-gnu/bits/types/mbstate_t.h ....... /usr/include/c++/7/exception ........ /usr/include/c++/7/bits/exception.h ........ /usr/include/c++/7/bits/exception_ptr.h ......... /usr/include/c++/7/bits/exception_defines.h ......... /usr/include/c++/7/bits/cxxabi_init_exception.h .......... /usr/lib/gcc/x86_64-linux-gnu/7/include/stddef.h ......... /usr/include/c++/7/typeinfo .......... /usr/include/c++/7/bits/hash_bytes.h ......... /usr/include/c++/7/new .......... /usr/include/c++/7/exception ........ /usr/include/c++/7/bits/nested_exception.h ......... /usr/include/c++/7/bits/move.h .......... /usr/include/c++/7/bits/concept_check.h .......... /usr/include/c++/7/type_traits ....... /usr/include/c++/7/bits/char_traits.h ........ /usr/include/c++/7/bits/stl_algobase.h ......... /usr/include/c++/7/bits/functexcept.h ......... /usr/include/c++/7/ext/numeric_traits.h ......... /usr/include/c++/7/bits/stl_pair.h ......... /usr/include/c++/7/bits/stl_iterator_base_types.h ......... /usr/include/c++/7/bits/stl_iterator_base_funcs.h .......... /usr/include/c++/7/debug/assertions.h ......... /usr/include/c++/7/bits/stl_iterator.h .......... /usr/include/c++/7/bits/ptr_traits.h ......... /usr/include/c++/7/debug/debug.h ......... /usr/include/c++/7/bits/predefined_ops.h ........ /usr/include/c++/7/cwchar ........ /usr/include/c++/7/cstdint ......... /usr/lib/gcc/x86_64-linux-gnu/7/include/stdint.h .......... /usr/include/stdint.h ........... /usr/include/x86_64-linux-gnu/bits/libc-header-start.h ........... /usr/include/x86_64-linux-gnu/bits/wordsize.h ........... /usr/include/x86_64-linux-gnu/bits/stdint-uintn.h ....... /usr/include/c++/7/bits/localefwd.h ........ /usr/include/x86_64-linux-gnu/c++/7/bits/c++locale.h ......... /usr/include/c++/7/clocale ........ /usr/include/c++/7/cctype ....... /usr/include/c++/7/bits/ios_base.h ........ /usr/include/c++/7/ext/atomicity.h ......... /usr/include/x86_64-linux-gnu/c++/7/bits/gthr.h .......... /usr/include/x86_64-linux-gnu/c++/7/bits/gthr-default.h ........... /usr/include/pthread.h ............ /usr/include/sched.h ............. /usr/lib/gcc/x86_64-linux-gnu/7/include/stddef.h ............. /usr/include/x86_64-linux-gnu/bits/sched.h ............. /usr/include/x86_64-linux-gnu/bits/cpu-set.h ............ /usr/include/x86_64-linux-gnu/bits/wordsize.h ......... /usr/include/x86_64-linux-gnu/c++/7/bits/atomic_word.h ........ /usr/include/c++/7/bits/locale_classes.h ......... /usr/include/c++/7/string .......... /usr/include/c++/7/bits/allocator.h ........... /usr/include/x86_64-linux-gnu/c++/7/bits/c++allocator.h ............ /usr/include/c++/7/ext/new_allocator.h .......... /usr/include/c++/7/bits/ostream_insert.h ........... /usr/include/c++/7/bits/cxxabi_forced.h .......... /usr/include/c++/7/bits/stl_function.h ........... /usr/include/c++/7/backward/binders.h .......... /usr/include/c++/7/bits/range_access.h ........... /usr/include/c++/7/initializer_list .......... /usr/include/c++/7/bits/basic_string.h ........... /usr/include/c++/7/ext/alloc_traits.h ............ /usr/include/c++/7/bits/alloc_traits.h ........... /usr/include/c++/7/ext/string_conversions.h ............ /usr/include/c++/7/cstdlib ............ /usr/include/c++/7/cwchar ............ /usr/include/c++/7/cstdio ............ /usr/include/c++/7/cerrno ........... /usr/include/c++/7/bits/functional_hash.h .......... /usr/include/c++/7/bits/basic_string.tcc ......... /usr/include/c++/7/bits/locale_classes.tcc ........ /usr/include/c++/7/system_error ......... /usr/include/x86_64-linux-gnu/c++/7/bits/error_constants.h .......... /usr/include/c++/7/cerrno ......... /usr/include/c++/7/stdexcept ....... /usr/include/c++/7/streambuf ........ /usr/include/c++/7/bits/streambuf.tcc ....... /usr/include/c++/7/bits/basic_ios.h ........ /usr/include/c++/7/bits/locale_facets.h ......... /usr/include/c++/7/cwctype .......... /usr/include/wctype.h ........... /usr/include/x86_64-linux-gnu/bits/wctype-wchar.h ......... /usr/include/c++/7/cctype ......... /usr/include/x86_64-linux-gnu/c++/7/bits/ctype_base.h ......... /usr/include/c++/7/bits/streambuf_iterator.h ......... /usr/include/x86_64-linux-gnu/c++/7/bits/ctype_inline.h ......... /usr/include/c++/7/bits/locale_facets.tcc ........ /usr/include/c++/7/bits/basic_ios.tcc ...... /usr/include/c++/7/ostream ....... /usr/include/c++/7/bits/ostream.tcc ...... /usr/include/c++/7/bits/istream.tcc ..... /usr/include/c++/7/bits/sstream.tcc .. /usr/include/c++/7/cfenv ... /usr/include/c++/7/fenv.h .... /usr/include/fenv.h ..... /usr/include/x86_64-linux-gnu/bits/libc-header-start.h ..... /usr/include/x86_64-linux-gnu/bits/fenv.h .. /usr/include/c++/7/cinttypes ... /usr/include/inttypes.h .. /usr/include/c++/7/cstdalign ... /usr/lib/gcc/x86_64-linux-gnu/7/include/stdalign.h .. /usr/include/c++/7/cstdbool ... /usr/lib/gcc/x86_64-linux-gnu/7/include/stdbool.h .. /usr/include/c++/7/ctgmath ... /usr/include/c++/7/cmath .. /usr/include/c++/7/cuchar ... /usr/include/c++/7/cwchar ... /usr/include/uchar.h .... /usr/lib/gcc/x86_64-linux-gnu/7/include/stddef.h .. /usr/include/c++/7/cwchar .. /usr/include/c++/7/cwctype .. /usr/include/c++/7/algorithm ... /usr/include/c++/7/utility .... /usr/include/c++/7/bits/stl_relops.h ... /usr/include/c++/7/bits/stl_algo.h .... /usr/include/c++/7/cstdlib .... /usr/include/c++/7/bits/algorithmfwd.h .... /usr/include/c++/7/bits/stl_heap.h .... /usr/include/c++/7/bits/stl_tempbuf.h ..... /usr/include/c++/7/bits/stl_construct.h .... /usr/include/c++/7/bits/uniform_int_dist.h ..... /usr/include/c++/7/limits .. /usr/include/c++/7/bitset .. /usr/include/c++/7/deque ... /usr/include/c++/7/bits/stl_uninitialized.h ... /usr/include/c++/7/bits/stl_deque.h ... /usr/include/c++/7/bits/deque.tcc .. /usr/include/c++/7/fstream ... /usr/include/c++/7/bits/codecvt.h ... /usr/include/c++/7/cstdio ... /usr/include/x86_64-linux-gnu/c++/7/bits/basic_file.h .... /usr/include/x86_64-linux-gnu/c++/7/bits/c++io.h ..... /usr/include/c++/7/cstdio ... /usr/include/c++/7/bits/fstream.tcc .. /usr/include/c++/7/functional ... /usr/include/c++/7/tuple .... /usr/include/c++/7/array .... /usr/include/c++/7/bits/uses_allocator.h .... /usr/include/c++/7/bits/invoke.h ... /usr/include/c++/7/bits/std_function.h .... /usr/include/c++/7/bits/refwrap.h .. /usr/include/c++/7/iomanip ... /usr/include/c++/7/locale .... /usr/include/c++/7/bits/locale_facets_nonio.h ..... /usr/include/c++/7/ctime ..... /usr/include/x86_64-linux-gnu/c++/7/bits/time_members.h ..... /usr/include/x86_64-linux-gnu/c++/7/bits/messages_members.h ...... /usr/include/libintl.h ..... /usr/include/c++/7/bits/locale_facets_nonio.tcc .... /usr/include/c++/7/bits/locale_conv.h ..... /usr/include/c++/7/bits/stringfwd.h ..... /usr/include/c++/7/bits/allocator.h ..... /usr/include/c++/7/bits/codecvt.h ..... /usr/include/c++/7/bits/unique_ptr.h ... /usr/include/c++/7/bits/quoted_string.h .. /usr/include/c++/7/iostream .. /usr/include/c++/7/iterator ... /usr/include/c++/7/bits/stream_iterator.h .. /usr/include/c++/7/list ... /usr/include/c++/7/bits/stl_list.h .... /usr/include/c++/7/bits/allocated_ptr.h .... /usr/include/c++/7/ext/aligned_buffer.h ... /usr/include/c++/7/bits/list.tcc .. /usr/include/c++/7/map ... /usr/include/c++/7/bits/stl_tree.h ... /usr/include/c++/7/bits/stl_map.h ... /usr/include/c++/7/bits/stl_multimap.h .. /usr/include/c++/7/memory ... /usr/include/c++/7/bits/stl_raw_storage_iter.h ... /usr/include/c++/7/ext/concurrence.h ... /usr/include/c++/7/bits/unique_ptr.h ... /usr/include/c++/7/bits/shared_ptr.h .... /usr/include/c++/7/bits/shared_ptr_base.h ... /usr/include/c++/7/bits/shared_ptr_atomic.h .... /usr/include/c++/7/bits/atomic_base.h ..... /usr/include/c++/7/bits/atomic_lockfree_defines.h ... /usr/include/c++/7/backward/auto_ptr.h .. /usr/include/c++/7/numeric ... /usr/include/c++/7/bits/stl_numeric.h .. /usr/include/c++/7/queue ... /usr/include/c++/7/vector .... /usr/include/c++/7/bits/stl_vector.h .... /usr/include/c++/7/bits/stl_bvector.h .... /usr/include/c++/7/bits/vector.tcc ... /usr/include/c++/7/bits/stl_queue.h .. /usr/include/c++/7/set ... /usr/include/c++/7/bits/stl_set.h ... /usr/include/c++/7/bits/stl_multiset.h .. /usr/include/c++/7/stack ... /usr/include/c++/7/bits/stl_stack.h .. /usr/include/c++/7/valarray ... /usr/include/c++/7/cmath ... /usr/include/c++/7/bits/valarray_array.h .... /usr/include/c++/7/cstdlib .... /usr/include/c++/7/bits/valarray_array.tcc ... /usr/include/c++/7/bits/valarray_before.h .... /usr/include/c++/7/bits/slice_array.h ... /usr/include/c++/7/bits/valarray_after.h ... /usr/include/c++/7/bits/gslice.h ... /usr/include/c++/7/bits/gslice_array.h ... /usr/include/c++/7/bits/mask_array.h ... /usr/include/c++/7/bits/indirect_array.h .. /usr/include/c++/7/atomic .. /usr/include/c++/7/chrono ... /usr/include/c++/7/ratio ... /usr/include/c++/7/ctime ... /usr/include/c++/7/bits/parse_numbers.h .. /usr/include/c++/7/codecvt .. /usr/include/c++/7/condition_variable ... /usr/include/c++/7/bits/std_mutex.h .. /usr/include/c++/7/forward_list ... /usr/include/c++/7/bits/forward_list.h ... /usr/include/c++/7/bits/forward_list.tcc .. /usr/include/c++/7/future ... /usr/include/c++/7/mutex ... /usr/include/c++/7/thread .... /usr/include/c++/7/cerrno ... /usr/include/c++/7/bits/atomic_futex.h .. /usr/include/c++/7/random ... /usr/include/c++/7/cmath ... /usr/include/c++/7/cstdlib ... /usr/include/c++/7/bits/random.h ... /usr/include/x86_64-linux-gnu/c++/7/bits/opt_random.h ... /usr/include/c++/7/bits/random.tcc .. /usr/include/c++/7/regex ... /usr/include/c++/7/cstring ... /usr/include/c++/7/bits/regex_constants.h ... /usr/include/c++/7/bits/regex_error.h ... /usr/include/c++/7/bits/regex_automaton.h .... /usr/include/c++/7/bits/regex_automaton.tcc ... /usr/include/c++/7/bits/regex_scanner.h .... /usr/include/c++/7/bits/regex_scanner.tcc ... /usr/include/c++/7/bits/regex_compiler.h .... /usr/include/c++/7/bits/regex_compiler.tcc ... /usr/include/c++/7/bits/regex.h .... /usr/include/c++/7/bits/regex.tcc ... /usr/include/c++/7/bits/regex_executor.h .... /usr/include/c++/7/bits/regex_executor.tcc .. /usr/include/c++/7/scoped_allocator .. /usr/include/c++/7/typeindex .. /usr/include/c++/7/unordered_map ... /usr/include/c++/7/bits/hashtable.h .... /usr/include/c++/7/bits/hashtable_policy.h ... /usr/include/c++/7/bits/unordered_map.h .. /usr/include/c++/7/unordered_set ... /usr/include/c++/7/bits/unordered_set.h .. /usr/include/c++/7/shared_mutex
|
大概就这些。。。
预编译头文件
查阅后发现其实 GCC/G++ 可以预编译头文件的,简单来说就是直接编译头文件成 gch 文件即可,即
1 2
| cd /usr/include/x86_64-linux-gnu/c++/9/bits sudo g++ -std=c++17 stdc++.h
|
而后正常使用编译命令即可,GCC/G++ 会自动使用预编译的内容
耗时对比
同样的命令,同样的代码,仅使用了 bits/stdc++.h
的情况下,两者的耗时情况
先是不使用预编译的
1 2 3
| real 0m2.476s user 0m1.279s sys 0m0.154s
|
差不多 4s 的耗时
然后是使用来预编译的
1 2 3
| real 0m0.668s user 0m0.258s sys 0m0.065s
|
差不多 1s 的耗时
天差地别