История изменений
Исправление
wota,
(текущая версия)
:
Синтаксисом померились теперь о быстродействии
~$ cat 1.cpp
inline void add( char*& d, const char* s ) {
while(*s) *d++=*s++;
}
int main() {
const char* v[] = {"John", "James", "Jakob", "Peter", "Janette", "Tom", "Vasya", "Jean", "Juilia", "Heather"};
char buf[128];
for(int k=0;k<1000000;++k) {
int n=0; char* s=buf;
for( auto i : v ) if(*i=='J') {
if(n++) {
if(n%3==2) add(s," and ");
else if(n%3) *s++='\n';
else add(s," follow ");
}
add(s,i);
}
*s=0;
}
}
~$ g++ -Ofast -std=c++11 1.cpp
~$ time ./a.out
real 0m0.048s
user 0m0.048s
sys 0m0.000s
Исходная версия
wota,
:
Синтаксисом померились теперь о быстродействии
~$ cat 1.cpp
inline void add( char*& d, const char* s ) {
while(*s) *d++=*s++;
}
int main() {
const char* v[] = {"John", "James", "Jakob", "Peter", "Janette", "Tom", "Vasya", "Jean", "Juilia", "Heather"};
char buf[128];
for(int k=0;k<1000000;++k) {
int n=0; char* s=buf;
for( auto i : v ) if(*i=='J') {
if(n++) {
if(n%3==2) add(s," and ");
else if(n%3) *s++='\n';
else add(s," follow ");
}
add(s,i);
}
*++s=0;
}
}
~$ g++ -Ofast -std=c++11 1.cpp
~$ time ./a.out
real 0m0.048s
user 0m0.048s
sys 0m0.000s