Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**********************************************************
- 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.
- 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) */
- #include <iostream>
- #include <fstream>
- using namespace std;
- #define BUFF_SIZE (32*1024)
- void copy(char * from, char * to) {
- ifstream in(from, ios::binary);
- ofstream out(to, ios::binary);
- if(in.is_open() && out.is_open()) {
- char buff[BUFF_SIZE];
- int filled;
- do {
- filled = in.readsome(buff, BUFF_SIZE);
- out.write(buff, filled);
- } while(filled);
- in.close();
- out.close();
- } else {
- cerr << "Któregoś pliku nie udało się otworzyć/utworzyć\n";
- }
- }
- int main (int argc, char ** argv) {
- if(argc < 3) {
- cout << "Użycie: " << argv[0] << " plik_źródło plik_cel\n";
- } else {
- copy(argv[1], argv[2]);
- }
- return 0;
- }
Add Comment
Please, Sign In to add comment