|
@@ -108,13 +108,6 @@ bool ClientLauncher::run(GameStartData &start_data, const Settings &cmd_args)
|
|
|
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) {
|
|
|
errorstream << "Could not initialize video driver." << std::endl;
|
|
|
return false;
|
|
@@ -394,7 +387,7 @@ bool ClientLauncher::launch_game(std::string &error_message,
|
|
|
if (cmd_args.exists("password-file")) {
|
|
|
std::ifstream passfile(cmd_args.get("password-file"));
|
|
|
if (passfile.good()) {
|
|
|
- getline(passfile, start_data.password);
|
|
|
+ std::getline(passfile, start_data.password);
|
|
|
} else {
|
|
|
error_message = gettext("Provided password file "
|
|
|
"failed to open: ")
|
|
@@ -451,8 +444,6 @@ bool ClientLauncher::launch_game(std::string &error_message,
|
|
|
|
|
|
int world_index = menudata.selected_world;
|
|
|
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];
|
|
|
}
|
|
|
|
|
@@ -524,15 +515,7 @@ bool ClientLauncher::launch_game(std::string &error_message,
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
- if (porting::signal_handler_killstatus())
|
|
|
- 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;
|
|
|
- }
|
|
|
+ return true;
|
|
|
}
|
|
|
|
|
|
start_data.world_path = start_data.world_spec.path;
|
|
@@ -580,104 +563,3 @@ void ClientLauncher::main_menu(MainMenuData *menudata)
|
|
|
if (!g_settings_path.empty())
|
|
|
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;
|
|
|
- }
|
|
|
-}
|