On-line: гостей 0. Всего: 0 [подробнее..]
АвторСообщение
администратор




Пост N: 3263
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 01.07.13 16:42. Заголовок: [?] Функция копирования файлов


Какая самая быстрая ?
__Copyfile , Hb_fcopy и тд и тп

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 28 , стр: 1 2 All [только новые]


moderator




Пост N: 492
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 01.07.13 17:02. Заголовок: Dima пишет: Какая с..


Dima пишет:

 цитата:
Какая самая быстрая ?


По-видимому, Hb_fcopy() будет побыстрее, поскольку она использует буфер размером 65536 (против 8192 у функции __Copyfile())

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 3264
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 01.07.13 17:10. Заголовок: gfilatov2002 Спасиб..


gfilatov2002
Спасибо !

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 898
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 01.07.13 20:01. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
По-видимому, Hb_fcopy() будет побыстрее

Вопрос спорный, и скорее верного ответа тут нет, поскольку зависит от размера файла, железа и т.п.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 889
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 01.07.13 20:55. Заголовок: Что, откуда и куда т..


Что, откуда и куда тоже важно. Если по сети, то будет иметь значение, поддерживают ли сетевые интерфейсы и коммутаторы jumbo-фрейм, к примеру...

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 2890
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 01.07.13 23:53. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
Hb_fcopy() будет побыстрее


А бегунок к ней можно приделать (для Харбора и Минигуи) ?

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 2908
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 02.07.13 08:39. Заголовок: Andrey пишет: А бег..


Andrey пишет:

 цитата:
А бегунок к ней можно приделать (для Харбора и Минигуи) ?



Чтобы приделать, надо попросить разработчиков добавить в hb_fcopy необязательный 3-й параметр - блок кода, который вызывался бы в процессе копирования.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 3265
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 02.07.13 11:18. Заголовок: Вообще то быстрее ст..


Вообще то быстрее стало работать с hb_fcopy
Процедура была такая.
В цикле локально копирую открытую базу порядка 1 гига (через RPC)
Затем архивация этой копии (через RPC)
Затем копирование архива по сети.
На все уходило 2 минуты

После переделки на все уходит 1 минута 30 секунд.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 2891
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 02.07.13 20:13. Заголовок: Pasha пишет: надо п..


Pasha пишет:

 цитата:
надо попросить разработчиков добавить в hb_fcopy необязательный 3-й параметр - блок кода, который вызывался бы в процессе копирования.


А как можно попросить ? Я по английски не очень...
Файлы по 100-200 Мб нужно копировать на флешку. Операция медленная...

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 3266
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 02.07.13 21:15. Заголовок: Andrey Попроси Пашу..


Andrey
Попроси Пашу :)

PS
Но насколько я помню ты Harbour не юзаешь а подсел на Xharbour

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 2909
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 02.07.13 21:44. Заголовок: Andrey пишет: А как..


Andrey пишет:

 цитата:
А как можно попросить ?



Зарегистрироваться на https://groups.google.com/forum/#!forum/harbour-devel и отправить туда сообщение. Всего-то.
Только вежливо и аргументированно :-)


 цитата:
Я по английски не очень...



Я тоже. Но есть translate.google.ru, другие online переводчики, да и другие способы. Было бы желание.

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 2910
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 02.07.13 21:50. Заголовок: Dima пишет: Andrey ..


Dima пишет:

 цитата:
Andrey
Попроси Пашу :)



Уже написал


 цитата:
PS
Но насколько я помню ты Harbour не юзаешь а подсел на Xharbour



Сюрприз. Оказывается, в __CopyFile из xHarbour поддерживается 3-й параметр - блок кода для прогресс-бара. Только размер буфера копирования там маленький: 8192

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 3267
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 02.07.13 22:12. Заголовок: Pasha пишет: Сюрпри..


Pasha пишет:

 цитата:
Сюрприз




Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 2892
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 03.07.13 12:57. Заголовок: Pasha пишет: Сюрпри..


Pasha пишет:

 цитата:
Сюрприз. Оказывается, в __CopyFile из xHarbour поддерживается 3-й параметр - блок кода для прогресс-бара. Только размер буфера копирования там маленький: 8192


Мне для МиниГуи надо, т.е. для Харбора !
Я отдельную утилиту (архивирование баз) делаю на МиниГуи...
И уже попробовал функцию HB_FCOPY() - очень шустро работает....

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост 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 так никто и не ответил.

Спасибо: 1 
ПрофильЦитата Ответить
администратор




Пост N: 3286
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 09.07.13 21:20. Заголовок: Pasha Не совсем пон..


Pasha
Не совсем понял , предложенный вариант будет быстрее чем hb_fcopy , так ?

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 2918
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 09.07.13 21:30. Заголовок: Dima пишет: Не совс..


Dima пишет:

 цитата:
Не совсем понял , предложенный вариант будет быстрее чем hb_fcopy , так ?



Не тестировал, но должен работать быстрее.
hb_fcopy открывает исходный файл - создает результирующий. Затем порциями по 32к читает/пишет данные.
А через CopyFileA все делается одним вызовом функции winapi. А уж она должна быть предельно оптимизирована, это же системная функция.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 3288
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 09.07.13 21:38. Заголовок: Pasha Выше приведен..


Pasha
Выше приведенный код в Harbour сработает ?

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 2919
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 09.07.13 22:02. Заголовок: Dima пишет: Выше пр..


Dima пишет:

 цитата:
Выше приведенный код в Harbour сработает ?



Да. Только надо собирать с библиотекой xhb, и нужны *.ch из contrib\xhb

Спасибо: 1 
ПрофильЦитата Ответить
Администратор




Пост 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


Спасибо: 1 
ПрофильЦитата Ответить
администратор




Пост N: 3289
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 09.07.13 22:46. Заголовок: Pasha А если с neti..


Pasha
А если с netio то как правильно собрать сервер netio для серверов 2003 ,2008 , 2012 ?

PS
Скажем для использования hb_fcopy , делаю это всего одной строкой request hb_fcopy

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 2921
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 09.07.13 23:08. Заголовок: Dima пишет: А если ..


Dima пишет:

 цитата:
А если с netio то как правильно собрать сервер netio для серверов 2003 ,2008 , 2012 ?

PS
Скажем для использования hb_fcopy , делаю это всего одной строкой request hb_fcopy



Не понял. сборка сервера netio обычная. Лучше netio собирать как сервис. Для использования hb_fcopy дать request на нее, все правильно.
Можно конечно использовать CopyFileA и на сервере netio. Для этого надо дать request на hb_DynCall, а с клиента вызов будет таким:

net:hb_DynCall( { "CopyFileA", "kernel32.dll", HB_DYN_CALLCONV_STDCALL }, cSource, cDest, 0 )

Но надо попробовать. Кажется, должно сработать.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 3291
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 10.07.13 08:36. Заголовок: Pasha пишет: Лучше ..


Pasha пишет:

 цитата:
Лучше netio собирать как сервис


Так и делаю.
Pasha пишет:

 цитата:
Но надо попробовать.


Пробну , спасибо !

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 3292
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 10.07.13 08:51. Заголовок: Пробнул. Да быстрее ..


Пробнул. Да быстрее работает.
Через RPC Hb_fcopy время копирования 1 минута 35 сек
Через RPC с новой функцией 1 минута 10 сек

А на Windows Server 2012 64 бит будет работать "CopyFileA" из Kernel32 ?

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 3293
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 10.07.13 08:59. Заголовок: Pasha пишет: а с кл..


Pasha пишет:

 цитата:
а с клиента вызов будет таким:

net:hb_DynCall( { "CopyFileA", "kernel32.dll", HB_DYN_CALLCONV_STDCALL }, cSource, cDest, 0 )



я сделал так
netio_funcexec("hb_DynCall",{ "CopyFileA", "kernel32.dll", HB_DYN_CALLCONV_STDCALL },cSource,cDest,0)

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 2923
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 10.07.13 09:59. Заголовок: Dima пишет: А на Wi..


Dima пишет:

 цитата:
А на Windows Server 2012 64 бит будет работать "CopyFileA" из Kernel32 ?



Почему бы нет ? Эта dll есть и в system32, и в SysWOW64 (это в win7 64-bit). Ее почему-то не переименовали.
Правда, это неуникодная функция, ее уникодный аналог - CopyFileW.

Спасибо: 1 
ПрофильЦитата Ответить
администратор




Пост N: 4225
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 06.10.14 14:08. Заголовок: Ни кто не проверял ,..


Ни кто не проверял , что будет если при копировании файла по сети с помощью
Hb_Fcopy неожиданно ляжет сеть , что вернет Hb_Fcopy ?
У себя проверить не могу так как сети нет.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3641
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 06.10.14 16:02. Заголовок: Где то это мы уже об..


Где то это мы уже обсуждали эти команды....
Я остановился на Hb_Fcopy !
Dima пишет:

 цитата:
Hb_Fcopy неожиданно ляжет сеть , что вернет Hb_Fcopy ?
У себя проверить не могу так как сети нет.


Возьми и копируй файл на флешку или дискету, а потом вытащи, получишь точно такую же ошибку !


Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 4226
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 06.10.14 16:28. Заголовок: Andrey Да я уже доп..


Andrey
Да я уже допер ;) А вот дискет уже не имею так как дисковода нет.
Флешку решил не мучать и сделал копирование на расшаренный ресурс
вида \\127.0.0.1\TEST , во время копирования снял галю на папке что она
расшарена. Получил -1 , что хорошо.

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 28 , стр: 1 2 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 507
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет