forked from Mirrorlandia_minetest/minetest
master #7
@ -108,13 +108,6 @@ bool ClientLauncher::run(GameStartData &start_data, const Settings &cmd_args)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Speed tests (done after irrlicht is loaded to get timer)
|
|
||||||
if (cmd_args.getFlag("speedtests")) {
|
|
||||||
dstream << "Running speed tests" << std::endl;
|
|
||||||
speed_tests();
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (m_rendering_engine->get_video_driver() == NULL) {
|
if (m_rendering_engine->get_video_driver() == NULL) {
|
||||||
errorstream << "Could not initialize video driver." << std::endl;
|
errorstream << "Could not initialize video driver." << std::endl;
|
||||||
return false;
|
return false;
|
||||||
@ -394,7 +387,7 @@ bool ClientLauncher::launch_game(std::string &error_message,
|
|||||||
if (cmd_args.exists("password-file")) {
|
if (cmd_args.exists("password-file")) {
|
||||||
std::ifstream passfile(cmd_args.get("password-file"));
|
std::ifstream passfile(cmd_args.get("password-file"));
|
||||||
if (passfile.good()) {
|
if (passfile.good()) {
|
||||||
getline(passfile, start_data.password);
|
std::getline(passfile, start_data.password);
|
||||||
} else {
|
} else {
|
||||||
error_message = gettext("Provided password file "
|
error_message = gettext("Provided password file "
|
||||||
"failed to open: ")
|
"failed to open: ")
|
||||||
@ -451,8 +444,6 @@ bool ClientLauncher::launch_game(std::string &error_message,
|
|||||||
|
|
||||||
int world_index = menudata.selected_world;
|
int world_index = menudata.selected_world;
|
||||||
if (world_index >= 0 && world_index < (int)worldspecs.size()) {
|
if (world_index >= 0 && world_index < (int)worldspecs.size()) {
|
||||||
g_settings->set("selected_world_path",
|
|
||||||
worldspecs[world_index].path);
|
|
||||||
start_data.world_spec = worldspecs[world_index];
|
start_data.world_spec = worldspecs[world_index];
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -524,15 +515,7 @@ bool ClientLauncher::launch_game(std::string &error_message,
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (porting::signal_handler_killstatus())
|
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
if (!start_data.game_spec.isValid()) {
|
|
||||||
error_message = gettext("Invalid gamespec.");
|
|
||||||
error_message += " (world.gameid=" + worldspec.gameid + ")";
|
|
||||||
errorstream << error_message << std::endl;
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
start_data.world_path = start_data.world_spec.path;
|
start_data.world_path = start_data.world_spec.path;
|
||||||
@ -580,104 +563,3 @@ void ClientLauncher::main_menu(MainMenuData *menudata)
|
|||||||
if (!g_settings_path.empty())
|
if (!g_settings_path.empty())
|
||||||
g_settings->updateConfigFile(g_settings_path.c_str());
|
g_settings->updateConfigFile(g_settings_path.c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
void ClientLauncher::speed_tests()
|
|
||||||
{
|
|
||||||
// volatile to avoid some potential compiler optimisations
|
|
||||||
volatile static s16 temp16;
|
|
||||||
volatile static f32 tempf;
|
|
||||||
// Silence compiler warning
|
|
||||||
(void)temp16;
|
|
||||||
static v3f tempv3f1;
|
|
||||||
static v3f tempv3f2;
|
|
||||||
static std::string tempstring;
|
|
||||||
static std::string tempstring2;
|
|
||||||
|
|
||||||
tempv3f1 = v3f();
|
|
||||||
tempv3f2 = v3f();
|
|
||||||
tempstring.clear();
|
|
||||||
tempstring2.clear();
|
|
||||||
|
|
||||||
{
|
|
||||||
infostream << "The following test should take around 20ms." << std::endl;
|
|
||||||
TimeTaker timer("Testing std::string speed");
|
|
||||||
const u32 jj = 10000;
|
|
||||||
for (u32 j = 0; j < jj; j++) {
|
|
||||||
tempstring.clear();
|
|
||||||
tempstring2.clear();
|
|
||||||
const u32 ii = 10;
|
|
||||||
for (u32 i = 0; i < ii; i++) {
|
|
||||||
tempstring2 += "asd";
|
|
||||||
}
|
|
||||||
for (u32 i = 0; i < ii+1; i++) {
|
|
||||||
tempstring += "asd";
|
|
||||||
if (tempstring == tempstring2)
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
infostream << "All of the following tests should take around 100ms each."
|
|
||||||
<< std::endl;
|
|
||||||
|
|
||||||
{
|
|
||||||
TimeTaker timer("Testing floating-point conversion speed");
|
|
||||||
tempf = 0.001;
|
|
||||||
for (u32 i = 0; i < 4000000; i++) {
|
|
||||||
temp16 += tempf;
|
|
||||||
tempf += 0.001;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
TimeTaker timer("Testing floating-point vector speed");
|
|
||||||
|
|
||||||
tempv3f1 = v3f(1, 2, 3);
|
|
||||||
tempv3f2 = v3f(4, 5, 6);
|
|
||||||
for (u32 i = 0; i < 10000000; i++) {
|
|
||||||
tempf += tempv3f1.dotProduct(tempv3f2);
|
|
||||||
tempv3f2 += v3f(7, 8, 9);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
TimeTaker timer("Testing std::map speed");
|
|
||||||
|
|
||||||
std::map<v2s16, f32> map1;
|
|
||||||
tempf = -324;
|
|
||||||
const s16 ii = 300;
|
|
||||||
for (s16 y = 0; y < ii; y++) {
|
|
||||||
for (s16 x = 0; x < ii; x++) {
|
|
||||||
map1[v2s16(x, y)] = tempf;
|
|
||||||
tempf += 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
for (s16 y = ii - 1; y >= 0; y--) {
|
|
||||||
for (s16 x = 0; x < ii; x++) {
|
|
||||||
tempf = map1[v2s16(x, y)];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
infostream << "Around 5000/ms should do well here." << std::endl;
|
|
||||||
TimeTaker timer("Testing mutex speed");
|
|
||||||
|
|
||||||
std::mutex m;
|
|
||||||
u32 n = 0;
|
|
||||||
u32 i = 0;
|
|
||||||
do {
|
|
||||||
n += 10000;
|
|
||||||
for (; i < n; i++) {
|
|
||||||
m.lock();
|
|
||||||
m.unlock();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Do at least 10ms
|
|
||||||
while(timer.getTimerTime() < 10);
|
|
||||||
|
|
||||||
u32 dtime = timer.stop();
|
|
||||||
u32 per_ms = n / dtime;
|
|
||||||
infostream << "Done. " << dtime << "ms, " << per_ms << "/ms" << std::endl;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
@ -44,8 +44,6 @@ private:
|
|||||||
|
|
||||||
void main_menu(MainMenuData *menudata);
|
void main_menu(MainMenuData *menudata);
|
||||||
|
|
||||||
void speed_tests();
|
|
||||||
|
|
||||||
bool skip_main_menu = false;
|
bool skip_main_menu = false;
|
||||||
bool random_input = false;
|
bool random_input = false;
|
||||||
RenderingEngine *m_rendering_engine = nullptr;
|
RenderingEngine *m_rendering_engine = nullptr;
|
||||||
|
@ -379,8 +379,6 @@ static void set_allowed_options(OptionList *allowed_options)
|
|||||||
allowed_options->insert(std::make_pair("recompress", ValueSpec(VALUETYPE_FLAG,
|
allowed_options->insert(std::make_pair("recompress", ValueSpec(VALUETYPE_FLAG,
|
||||||
_("Recompress the blocks of the given map database."))));
|
_("Recompress the blocks of the given map database."))));
|
||||||
#ifndef SERVER
|
#ifndef SERVER
|
||||||
allowed_options->insert(std::make_pair("speedtests", ValueSpec(VALUETYPE_FLAG,
|
|
||||||
_("Run speed tests"))));
|
|
||||||
allowed_options->insert(std::make_pair("address", ValueSpec(VALUETYPE_STRING,
|
allowed_options->insert(std::make_pair("address", ValueSpec(VALUETYPE_STRING,
|
||||||
_("Address to connect to. ('' = local game)"))));
|
_("Address to connect to. ('' = local game)"))));
|
||||||
allowed_options->insert(std::make_pair("random-input", ValueSpec(VALUETYPE_FLAG,
|
allowed_options->insert(std::make_pair("random-input", ValueSpec(VALUETYPE_FLAG,
|
||||||
|
Loading…
Reference in New Issue
Block a user