#include <ctime>
#include <iostream>
void my_memcopy_0(void *dest, const void *src, size_t len) {
char *d = (char *)dest;
char *s = (char *)src;
for (int i = 0; i < len; ++i) {
d[i] = s[i];
}
}
void my_memcopy_1(void *dest, const void *src, size_t len) {
char *d = (char *)dest;
char *s = (char *)src;
int i = 0;
switch (len % 8) {
case 0:
while (i < len) {
d[i] = s[i];
i++;
case 7:
d[i] = s[i];
i++;
case 6:
d[i] = s[i];
i++;
case 5:
d[i] = s[i];
i++;
case 4:
d[i] = s[i];
i++;
case 3:
d[i] = s[i];
i++;
case 2:
d[i] = s[i];
i++;
case 1:
d[i] = s[i];
i++;
}
}
}
struct ct_t {
ct_t() : t(clock()) {}
~ct_t() { std::cout << "cost time :" << (clock() - t) << std::endl; }
private:
clock_t t;
};
int main() {
const size_t len = 999999 * 555;
char *buff = new char[len];
{
ct_t _t;
my_memcopy_0(buff, buff, len);
}
{
ct_t _t;
my_memcopy_1(buff, buff, len);
}
delete[] buff;
return 0;
}
#include <ctime>
#include <iostream>
struct my_con_t {
my_con_t() : ret_value(0), i(0), status_(0) {}
bool operator()() {
switch (status_) {
case 0:
for (i = 0; i < 100; ++i) {
status_ = 1;
ret_value = i;
return true;
case 1:;
}
default:
status_ = -1;
return false;
}
}
int operator*() { return ret_value; }
private:
int ret_value;
int i;
int status_;
};
int main() {
my_con_t ct;
while (ct()) {
std::cout << *ct << std::endl;
}
return 0;
}