#include <dlfcn.h>
+#ifdef LAUNCHING_TIME_MEASURE
+#include <ctime>
+#endif
+
#include <cstdlib>
#include <cstring>
#include <vector>
void Launcher::Initialize()
{
+#ifdef LAUNCHING_TIME_MEASURE
+ std::clock_t start = std::clock();
+#endif
+
std::ifstream iniStream(LauncherConfig);
std::stringstream iniString;
iniString << iniStream.rdbuf();
_DBG("libcoreclr.so : [%s]", libcoreclr.c_str());
+#ifdef LAUNCHING_TIME_MEASURE
+ std::clock_t config_read_time = std::clock();
+ _DBG("Reading Config file... : %Lf ms ", (config_read_time - start) / (double)(CLOCKS_PER_SEC / 1000));
+#endif
+
coreclrLib = dlopen(libcoreclr.c_str(), RTLD_NOW | RTLD_LOCAL);
if (coreclrLib == nullptr)
{
NativeDllSearchDirectories = nativeSoSearchDirs;
AppDomainCompatSwitch = "UseLatestBehaviorWhenTFMNotSpecified";
}
+
+#ifdef LAUNCHING_TIME_MEASURE
+ std::clock_t dlopen_time = std::clock();
+ _DBG("dlopen and dlsym time... : %Lf ms ", (dlopen_time - config_read_time) / (double)(CLOCKS_PER_SEC / 1000));
+ _DBG("initialize time... : %Lf ms ", (dlopen_time - start) / (double)(CLOCKS_PER_SEC / 1000));
+#endif
+
}
void Launcher::Launch(const string& exe_path, const string& app_root, int argc, char *argv[])
_DBG("before initialize coreclr");
+#ifdef LAUNCHING_TIME_MEASURE
+ std::clock_t start = std::clock();
+#endif
int st = initializeCoreCLR(exe_path.c_str(),
"tizen_dotnet_launcher",
sizeof(propertyKeys) / sizeof(propertyKeys[0]),
&domainId);
_DBG("after initialize coreclr");
+#ifdef LAUNCHING_TIME_MEASURE
+ std::clock_t initialize_coreclr_time = std::clock();
+ _DBG("call coreclr_initialize ... : %Lf ms ", (initialize_coreclr_time - start) / (double)(CLOCKS_PER_SEC / 1000));
+#endif
if (st < 0)
{
// initialize coreclr fail
// shutdown fail
_ERR("shutdown core clr fail! (0x%08x)", st);
}
+#ifdef LAUNCHING_TIME_MEASURE
+ std::clock_t execute_assembly_time = std::clock();
+ _DBG("call execute_assembly_time ... : %Lf ms ", (execute_assembly_time - initialize_coreclr_time) / (double)(CLOCKS_PER_SEC / 1000));
+#endif
}
if (dlclose(coreclrLib) != 0)
{
_ERR("libcoreclr.so close failed");
}
+#ifdef LAUNCHING_TIME_MEASURE
+ std::clock_t after_launching_time = std::clock();
+ _DBG("launching end time ... : %Lf ms ", (after_launching_time - start) / (double)(CLOCKS_PER_SEC / 1000));
+#endif
}
} // namespace runtime