Автор | Сообщение |
|
| |
Пост N: 3263
Зарегистрирован: 17.05.05
|
|
Отправлено: 01.07.13 16:42. Заголовок: [?] Функция копирования файлов
Какая самая быстрая ? __Copyfile , Hb_fcopy и тд и тп
|
|
|
Новых ответов нет
, стр:
1
2
All
[см. все]
|
|
|
| moderator
|
Пост N: 492
Зарегистрирован: 11.02.10
|
|
Отправлено: 01.07.13 17:02. Заголовок: Dima пишет: Какая с..
Dima пишет: По-видимому, Hb_fcopy() будет побыстрее, поскольку она использует буфер размером 65536 (против 8192 у функции __Copyfile())
|
|
|
|
| |
Пост N: 3264
Зарегистрирован: 17.05.05
|
|
Отправлено: 01.07.13 17:10. Заголовок: gfilatov2002 Спасиб..
gfilatov2002 Спасибо !
|
|
|
|
| |
Пост N: 898
Зарегистрирован: 11.06.10
|
|
Отправлено: 01.07.13 20:01. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | По-видимому, Hb_fcopy() будет побыстрее |
|
Вопрос спорный, и скорее верного ответа тут нет, поскольку зависит от размера файла, железа и т.п.
|
|
|
|
| постоянный участник
|
Пост N: 889
Зарегистрирован: 27.01.07
|
|
Отправлено: 01.07.13 20:55. Заголовок: Что, откуда и куда т..
Что, откуда и куда тоже важно. Если по сети, то будет иметь значение, поддерживают ли сетевые интерфейсы и коммутаторы jumbo-фрейм, к примеру...
|
|
|
|
| постоянный участник
|
Пост N: 2890
Зарегистрирован: 12.09.06
|
|
Отправлено: 01.07.13 23:53. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | Hb_fcopy() будет побыстрее |
| А бегунок к ней можно приделать (для Харбора и Минигуи) ?
|
|
|
|
| Администратор
|
Пост N: 2908
Зарегистрирован: 23.05.05
|
|
Отправлено: 02.07.13 08:39. Заголовок: Andrey пишет: А бег..
Andrey пишет: цитата: | А бегунок к ней можно приделать (для Харбора и Минигуи) ? |
| Чтобы приделать, надо попросить разработчиков добавить в hb_fcopy необязательный 3-й параметр - блок кода, который вызывался бы в процессе копирования.
|
|
|
|
| |
Пост N: 3265
Зарегистрирован: 17.05.05
|
|
Отправлено: 02.07.13 11:18. Заголовок: Вообще то быстрее ст..
Вообще то быстрее стало работать с hb_fcopy Процедура была такая. В цикле локально копирую открытую базу порядка 1 гига (через RPC) Затем архивация этой копии (через RPC) Затем копирование архива по сети. На все уходило 2 минуты После переделки на все уходит 1 минута 30 секунд.
|
|
|
|
| постоянный участник
|
Пост N: 2891
Зарегистрирован: 12.09.06
|
|
Отправлено: 02.07.13 20:13. Заголовок: Pasha пишет: надо п..
Pasha пишет: цитата: | надо попросить разработчиков добавить в hb_fcopy необязательный 3-й параметр - блок кода, который вызывался бы в процессе копирования. |
| А как можно попросить ? Я по английски не очень... Файлы по 100-200 Мб нужно копировать на флешку. Операция медленная...
|
|
|
|
| |
Пост N: 3266
Зарегистрирован: 17.05.05
|
|
Отправлено: 02.07.13 21:15. Заголовок: Andrey Попроси Пашу..
Andrey Попроси Пашу :) PS Но насколько я помню ты Harbour не юзаешь а подсел на Xharbour
|
|
|
|
| Администратор
|
Пост N: 2909
Зарегистрирован: 23.05.05
|
|
Отправлено: 02.07.13 21:44. Заголовок: Andrey пишет: А как..
Andrey пишет: Зарегистрироваться на https://groups.google.com/forum/#!forum/harbour-devel и отправить туда сообщение. Всего-то. Только вежливо и аргументированно :-) цитата: | Я по английски не очень... |
| Я тоже. Но есть translate.google.ru, другие online переводчики, да и другие способы. Было бы желание.
|
|
|
|
| Администратор
|
Пост N: 2910
Зарегистрирован: 23.05.05
|
|
Отправлено: 02.07.13 21:50. Заголовок: Dima пишет: Andrey ..
Dima пишет: Уже написал цитата: | PS Но насколько я помню ты Harbour не юзаешь а подсел на Xharbour |
| Сюрприз. Оказывается, в __CopyFile из xHarbour поддерживается 3-й параметр - блок кода для прогресс-бара. Только размер буфера копирования там маленький: 8192
|
|
|
|
|
| |
Пост N: 3267
Зарегистрирован: 17.05.05
|
|
Отправлено: 02.07.13 22:12. Заголовок: Pasha пишет: Сюрпри..
Pasha пишет:
|
|
|
|
| постоянный участник
|
Пост N: 2892
Зарегистрирован: 12.09.06
|
|
Отправлено: 03.07.13 12:57. Заголовок: Pasha пишет: Сюрпри..
Pasha пишет: цитата: | Сюрприз. Оказывается, в __CopyFile из xHarbour поддерживается 3-й параметр - блок кода для прогресс-бара. Только размер буфера копирования там маленький: 8192 |
| Мне для МиниГуи надо, т.е. для Харбора ! Я отдельную утилиту (архивирование баз) делаю на МиниГуи... И уже попробовал функцию HB_FCOPY() - очень шустро работает....
|
|
|
|
| Администратор
|
Пост N: 2917
Зарегистрирован: 23.05.05
|
|
Отправлено: 09.07.13 20:42. Заголовок: На comp.lang.xharbou..
На comp.lang.xharbour тоже захотели быстрого копирования файла. И тоже обнаружили, что filecopy из ct с буфером 8к быстрее, чем copy file с буфером 512 байт. hb_fcopy с буфером 32к в xHarbour нет, а хочется еще быстрее. Enrico подсказал самое быстрое и простое решение для windows: #include "Hbdll.ch" FUNCTION MAIN() ? COPYFILE( cSource, cDest ) RETURN NIL DLL FUNCTION COPYFILE( cExistingFileName AS LPSTR, cNewFileName AS LPSTR, lFailIfExists AS LONG ) AS BOOL; PASCAL FROM "CopyFileA" LIB "kernel32.dll" В этом случае непосредственно используется функция winapi, и какой там буфер - неизвестно. Но, судя по тестам, работает она раза в 4 быстрее первых двух функций. Вот только прогресс-бар ака бегунок туда не прикрутить.. PS Мне, кстати, в harbour dev так никто и не ответил.
|
|
|
|
| |
Пост N: 3286
Зарегистрирован: 17.05.05
|
|
Отправлено: 09.07.13 21:20. Заголовок: Pasha Не совсем пон..
Pasha Не совсем понял , предложенный вариант будет быстрее чем hb_fcopy , так ?
|
|
|
|
| Администратор
|
Пост N: 2918
Зарегистрирован: 23.05.05
|
|
Отправлено: 09.07.13 21:30. Заголовок: Dima пишет: Не совс..
Dima пишет: цитата: | Не совсем понял , предложенный вариант будет быстрее чем hb_fcopy , так ? |
| Не тестировал, но должен работать быстрее. hb_fcopy открывает исходный файл - создает результирующий. Затем порциями по 32к читает/пишет данные. А через CopyFileA все делается одним вызовом функции winapi. А уж она должна быть предельно оптимизирована, это же системная функция.
|
|
|
|
| |
Пост N: 3288
Зарегистрирован: 17.05.05
|
|
Отправлено: 09.07.13 21:38. Заголовок: Pasha Выше приведен..
Pasha Выше приведенный код в Harbour сработает ?
|
|
|
|
| Администратор
|
Пост N: 2919
Зарегистрирован: 23.05.05
|
|
Отправлено: 09.07.13 22:02. Заголовок: Dima пишет: Выше пр..
Dima пишет: цитата: | Выше приведенный код в Harbour сработает ? |
| Да. Только надо собирать с библиотекой xhb, и нужны *.ch из contrib\xhb
|
|
|
|
| Администратор
|
Пост N: 2920
Зарегистрирован: 23.05.05
|
|
Отправлено: 09.07.13 22:43. Заголовок: Для Harbour лучше вы..
Для Harbour лучше вызывать эту функцию по другому: #include "hbdyn.ch" FUNCTION MAIN(cSource, cDest) hb_DynCall( { "CopyFileA", "kernel32.dll", HB_DYN_CALLCONV_STDCALL }, cSource, cDest, 0 ) RETURN NIL
|
|
|
|
| |
Пост N: 3289
Зарегистрирован: 17.05.05
|
|
Отправлено: 09.07.13 22:46. Заголовок: Pasha А если с neti..
Pasha А если с netio то как правильно собрать сервер netio для серверов 2003 ,2008 , 2012 ? PS Скажем для использования hb_fcopy , делаю это всего одной строкой request hb_fcopy
|
|
|
Новых ответов нет
, стр:
1
2
All
[см. все]
|
|