Skip to content

Instantly share code, notes, and snippets.

@keichi
Created November 28, 2022 11:47
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save keichi/c3559ec8487bbfaf7bae73800d00797d to your computer and use it in GitHub Desktop.
Save keichi/c3559ec8487bbfaf7bae73800d00797d to your computer and use it in GitHub Desktop.
#include <cstring>
#include <vector>
#include <ftrace.h>
const int n = 1000000;
const int offset = 1;
void do_memcpy(std::vector<char> &dst, const std::vector<char> &src)
{
ftrace_region_begin("memcpy");
std::memcpy(dst.data() + offset, src.data(), n - offset);
ftrace_region_end("memcpy");
}
void do_copy_vec(std::vector<char> &dst, const std::vector<char> &src)
{
ftrace_region_begin("copy/iterator");
std::copy(src.begin() + offset, src.end(), dst.begin());
ftrace_region_end("copy/iterator");
}
void do_copy_ptr(std::vector<char> &dst, const std::vector<char> &src)
{
ftrace_region_begin("copy/pointer");
std::copy(src.data() + offset, src.data() + n, dst.data());
ftrace_region_end("copy/pointer");
}
int main()
{
std::vector<char> src(n), dst(n);
do_memcpy(dst, src);
do_copy_vec(dst, src);
do_copy_ptr(dst, src);
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment