#include #include #include void appendTest(std::string test) { std::string buff = ""; for (int j = 0; j < test.length(); j++) { buff.append("\033[38;2;").append(std::to_string(j)) .append(";").append(std::to_string(j)) .append(";").append(std::to_string(j)) .append("m").append(test.substr(j, 1)) .append("\033[0m "); } buff.append("\n"); printf("\n"); } void sprintfTest(std::string test) { char cBuff[40]; std::string buff = ""; for (int j = 0; j < test.length(); j++) { sprintf(cBuff, "\033[38;2;%d;%d;%dm%s\033[0m", j, j, j, test.substr(j, 1).c_str()); buff.append(cBuff); cBuff[0] = '\0'; } buff.append("\n"); printf("\n"); } void printfTest(std::string test) { for (int j = 0; j < test.length(); j++) { printf("\033[38;2;%d;%d;%dm%s\033[0m", j, j, j, test.substr(j, 1).c_str()); } printf("\n"); } struct timetype { std::chrono::time_point t; int ms(); void get(); int operator-(timetype& t2) { return this->ms() - t2.ms(); } }; int timetype::ms() { return std::chrono::duration_cast(this->t.time_since_epoch()).count(); } void timetype::get() { this->t = std::chrono::steady_clock::now(); } void resolve(const char* name,timetype& start,timetype& end) { fprintf(stderr,"%s method: %d ms\n", name, end-start); } int main() { std::string test = "hello i am a really weird string that is really long and i am just typing random stuff to make it longer"; timetype t1, t2, t3, t4; t1.get(); for (int i = 0; i < 100000; i++) { appendTest(test); } t2.get(); for (int i = 0; i < 100000; i++) { sprintfTest(test); } t3.get(); for (int i = 0; i < 100000; i++) { printfTest(test); } t4.get(); resolve("append", t1, t2); resolve("sprintf", t2, t3); resolve("printf", t3, t4); }