Добавить любой RSS - источник (включая журнал LiveJournal) в свою ленту друзей вы можете на странице синдикации.
Исходная информация - http://forum.sources.ru. Данный дневник сформирован из открытого RSS-источника по адресу http://forum.sources.ru/yandex.php, и дополняется в соответствии с дополнением данного источника. Он может не соответствовать содержимому оригинальной страницы. Трансляция создана автоматически по запросу читателей этой RSS ленты. По всем вопросам о работе данного сервиса обращаться со страницы контактной информации.[Обновить трансляцию]
Qraizer: Сергей85, ты прикалываешься скриншотами? Ок, я тоже так умею. SharedScreenshot.jpg (, : 20)
И вообще, бросал бы ты ...неработающие инструменты использовать.
1 228 и 827 в сумме как-то подозрительно эти самые 2 048 напоминают...
Тогда копирование средствами ОС показывалось бы 800-900, так как это было бы узким местом...
Я скорость чтения проверяю Far manager-ом: копированием в nul
А за сколько по времени то проходит копирование/чтение?
При малых значениях, результаты могут быть не точными, так как может что-то стороннее влиять.
Может надо по 10 раз подряд операцию сделать...
тут вроде все легко и все работает, но в условии задачи есть такое требование:
"надо корректно обрабатывать ситуацию повторного вызова деструктора. В этом случае деструктор не должен пытаться освобождать в динамической памяти объекты повторно"
При таких входных данных за задачу лучше вообще не браться. По ходу, автор задачи просто не в теме. Вообще. Неизвестно, что ему ещё в голову взбредёт.
На момент записи Long DOuble в поток происходит его запись в виде "4.29497e+09". То есть, происходит потеря информации от изначального числа 4294967295.
Как заставить поток не преобразовывать значение в математический вид - а просто записать как есть?
Понедельник, 28 Декабря 2020 г. 17:13
+ в цитатник
Сергей85: Похоже, единственный способ - двойное перетипирование. Писать ансистринговую функцию - чтобы потом ее значение преобразовать в лонг дабл где-то в другом месте.
При этом функция преобразования должна находиться в конкретном CPP-файле, без привязки к TForm_Main::.
Понедельник, 28 Декабря 2020 г. 17:03
+ в цитатник
a_n_y_a: Отключил кеширование. Скорость копирования системой почти не изменилась, а скорость записи и чтения моей программой уменьшилась в два раза: Скорость чтения = 535 мегабайт в секунду Скорость записи = 493 мегабайт в секунду
Понедельник, 28 Декабря 2020 г. 16:21
+ в цитатник
Grigav: Спасибо! Мне это как-то не пришло в голову. Проверил, точно такая же задержка у этих файлов даже при простом копировании TotalCommander'ом. Придется просто смириться.
А что диспетчер задач показывает на дисках при копировании через вашу программу?
Сто пудово через System передача идёт.
Надо кэширование на запись отключить(или наоборот включить). Иначе у вас при записи данные копируются из вашей программы в незанятою ОЗУ, а от туда на диск. Это съедает время.
С выходом Винды 10 о счетчиках можно забыть. Они работают криво. Там под кэш используются ваши 30-40% которые учитываются как свободные, а надели там ваши файл за кэшировался. Да еще и не влез.
Цитата
Своп в системе отключен.
Отключение Свопа не отключает алгоритм сжатия страниц.
Понедельник, 28 Декабря 2020 г. 14:33
+ в цитатник
Gonarh: Вангую за драйвер-фильтр антивируса. Для проверки теории надо не просто отключить антивирь, а вообще удалить, т.к. сдаётся мне, что драйвера файловой системы так просто антивирь не отключает.
Понедельник, 28 Декабря 2020 г. 14:30
+ в цитатник
Grigav: Написал программу, связанную с каталогизацией файлов на жестком диске. Файлы ищутся с помощью функций FindFirst и FindNext. Затем я открываю каждый найденный файл, читаю из него маленький фрагмент (1024 байта) и аккуратно закрываю файл. Так вот, обнаружилось, что большинство файлов открываются нормально, но некоторые (замечено за некоторыми файлами EXE и PDF) открываются по нескольку секунд! Фрагмент текста, которым это было установлено:
t1=GetTime(); //Опрашиваю "системные часы"
MyTmp=FileOpen(FN,fmOpenRead | fmShareDenyNone); //Открываю файл с именем FN для чтения (имя FN формируется в соответствии с FindNext)
t2=GetTime(); //Повторно опрашиваю системные часы
__int64 t3;
t3=MilliSecondsBetween(t2,t1); //Оцениваю время в миллисекундах, ушедшее на открытие файла
if (t3>10000) //Если это время превосходит 10 секунд
{
UnicodeString ZZ;
ZZ=t3;
Memo2->Lines->Add(ZZ+FN); //помещаю значение времени и имя файла в табличку-отчет
}
Сначала обеспокоило, что индикация смены файлов затормаживается; заподозрил зависание программы и стал обвешивать отладочными маячками. Потом выяснил, что программа не зависает, а именно затормаживается с последующим возобновлением. Сужая область действия маячков сумел локализовать единственную строчку - операцию FileOpen. Отмечу, что во время каталогизации проблемные файлы не были открыты каким-то иным приложением.
Вопрос: может быть, при открытии файла следует устанавливать какие-то другие атрибуты? Сталкивался ли кто-нибудь еще с подобной проблемой?
__int64 DlNew = 1024; DlNew = DlNew * 1024; DlNew = DlNew * 1024; DlNew = DlNew * 20;
Это буфер в 20Гб. У вас есть столько оперативки?
Да, у меня 32 ГБ оперативки. Гаджет "Индикатор ЦП", показывающий и загрузку ОП, показывает 60-70% использования памяти. Своп в системе отключен. Почему такая разница в скорости?
Понедельник, 28 Декабря 2020 г. 13:18
+ в цитатник
Black_Dragon: __int64 DlNew = 1024; DlNew = DlNew * 1024; DlNew = DlNew * 1024; DlNew = DlNew * 20; Это буфер в 20Гб. У вас есть столько оперативки? Если нет, то все идет в своп.... Надо делать маленький буфер, например, при 16Гб ОЗУ, сделать его 1Гб, слишком мелкий тоже делать нельзя. Читать/писать в цикле.
Понедельник, 28 Декабря 2020 г. 13:03
+ в цитатник
Black_Dragon: Постановщик задачи уже наступал на грабли вызова деструктора дважды. Опыт отсюда не вынес... По этому, поставил такое условие.
Имхо... Выполнить условия не сложно... Но с таких подходом, в коде может быть очень много "багов", которые надо вот таким образом подстраховывать... Но все косяки не предугадаешь...