mirror of
https://github.com/zenorogue/hyperrogue.git
synced 2025-10-28 12:27:40 +00:00
Replace std::function with hyper_function for a 37% speedup in compile time.
Before:
time c++ -O2 -DMAC -I/usr/local/include -std=c++11 -march=native
-W -Wall -Wextra -Werror -pedantic -Wno-format-pedantic
-Wno-missing-field-initializers -Wno-unused-parameter
-DCAP_GLEW=0 -DCAP_PNG=0 -c hyper.cpp -o hyper.o
real 2m22.508s
user 2m20.625s
sys 0m1.648s
After:
time c++ -O2 -DMAC -I/usr/local/include -std=c++11 -march=native
-W -Wall -Wextra -Werror -pedantic -Wno-format-pedantic
-Wno-missing-field-initializers -Wno-unused-parameter
-DCAP_GLEW=0 -DCAP_PNG=0 -c hyper.cpp -o hyper.o
real 1m30.515s
user 1m29.793s
sys 0m0.689s
Comparing object file size:
-rw-r--r-- 1 ajo staff 8215036 Jan 5 20:46 old-hyper.o
-rw-r--r-- 1 ajo staff 7538072 Jan 5 20:47 new-hyper.o
Comparing number of symbols:
nm old-hyper.o | wc -l => 12590
nm new-hyper.o | wc -l => 9742
No appreciable difference in link time; the linker takes less than
half a second in either case.
This commit is contained in:
committed by
Zeno Rogue
parent
a478bb1485
commit
87240cf990
4
hyper.h
4
hyper.h
@@ -7,6 +7,7 @@
|
||||
#define VERNUM_HEX 0xA505
|
||||
|
||||
#include <stdarg.h>
|
||||
#include "hyper_function.h"
|
||||
|
||||
namespace hr {
|
||||
|
||||
@@ -15,6 +16,8 @@ void ignore(T&&) {
|
||||
// placate GCC's overzealous -Wunused-result
|
||||
}
|
||||
|
||||
template<class Sig> using function = hyper_function<Sig>;
|
||||
|
||||
// functions and types used from the standard library
|
||||
using std::vector;
|
||||
using std::map;
|
||||
@@ -24,7 +27,6 @@ using std::sort;
|
||||
using std::multimap;
|
||||
using std::set;
|
||||
using std::string;
|
||||
using std::function;
|
||||
using std::pair;
|
||||
using std::tuple;
|
||||
using std::shared_ptr;
|
||||
|
||||
Reference in New Issue
Block a user