Guest User

Untitled

a guest
May 27th, 2018
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.21 KB | None | 0 0
  1. /**********************************************************
  2. ZAD 4 Napisz funkcję kopiującą plik źródłowy do docelowego (możliwie wydajną). Sprawdź jej wydajność i porównaj ze standardowym systemowym wywołaniem cp.
  3. Wydajność jest porównywalna z cp (przy plikach ~700MB), winę zwalam na implementację fstreamów; Zwiększanie bufora powyżej 32kB nie daje u mnie żadnej poprawy (to akurat może zależeć od systemu plików, u mnie xfs) */
  4. #include <iostream>
  5. #include <fstream>
  6. using namespace std;
  7.  
  8. #define BUFF_SIZE (32*1024)
  9.  
  10. void copy(char * from, char * to) {
  11. ifstream in(from, ios::binary);
  12. ofstream out(to, ios::binary);
  13.  
  14. if(in.is_open() && out.is_open()) {
  15. char buff[BUFF_SIZE];
  16. int filled;
  17.  
  18. do {
  19. filled = in.readsome(buff, BUFF_SIZE);
  20. out.write(buff, filled);
  21. } while(filled);
  22.  
  23. in.close();
  24. out.close();
  25. } else {
  26. cerr << "Któregoś pliku nie udało się otworzyć/utworzyć\n";
  27. }
  28. }
  29.  
  30. int main (int argc, char ** argv) {
  31. if(argc < 3) {
  32. cout << "Użycie: " << argv[0] << " plik_źródło plik_cel\n";
  33. } else {
  34. copy(argv[1], argv[2]);
  35. }
  36. return 0;
  37. }
Add Comment
Please, Sign In to add comment