Switch to English?
Yes
Переключитись на українську?
Так
Переключиться на русскую?
Да
Przełączyć się na polską?
Tak
Разместите свой проект бесплатно и начните получать предложения от фрилансеров-исполнителей уже спустя минуты после публикации!

Delphi алгоритм

1000 UAH

Отзыв заказчика о сотрудничестве с Valera Vino

Качество
Профессионализм
Стоимость
Контактность
Сроки

Все в порядке, работа выполнена.

Отзыв фрилансера о сотрудничестве с Евгением Сергеевичем

Оплата
Постановка задачи
Четкость требований
Контактность

Хороший заказчик, адекватный. Приятно работать.
Рекомендую сотрудничать.

  1. 147    5  0
    Победившая ставка1 день1000 UAH

    Сделаю через dll.
    В делфи не нашел идеального способа, поэтому в шарпе соберу dll и через неё будем работать.

  2. 221    6  1
    1 день1000 UAH

    Функция CreateFileA
    Второй параметр dwDesireAccess - устанавливаете в
    GENERIC_READ
    Третий - dwShareMode ставите в 1
    Главное правило - все остальные открытия данного файла (другими потоками или процессами) не должны противоречить первому открытию в вопросах прав совместного доступа.
    Синхронизацию чтения если требуется можно и через евенты или через вами определенные флаги/значения в shared memory. Из одного процесса вообще не проблема. Вот собственно и весь алгоритм. Более детально - две пачки честера и кофе. Будет со схемками/блоками ))

  3. 1 ставка скрыта
  • Valera Vino
    10 июня 2019, 0:02 |

    Привет, напиши пожалуйста мне в телеграм t.me/coinbits
    или тут в личку.

  • Профиль удален
    10 июня 2019, 0:15 |

    По-моему это невозможно. Многопотоково один файл. Или я чего то не знаю )))

    Только стрим ("на лету") качать данные и обрабатывать.

  • Сергей Гребенюк
    10 июня 2019, 4:32 |

    ну сорян канеш, но скорее второе

  • Евгений Сергеевич
    10 июня 2019, 0:27 |

    Мне необходимо многопоточно и синхронно дергать строки поочередно в каждый поток с смещением от начала и до конца файла.

  • Профиль удален
    10 июня 2019, 0:29 |

    Ну если только сплитить (разделит) файл на мильён файлов и тогда обрабатывать их в многопотоке.

  • Игорь Ляльченко
    10 июня 2019, 1:43 |

    Нет. Совместный доступ я описал в ставке. Собственно полагая что именно он вызвал проблему, т.к в содержимом файла, судя по ТЗ строки одинаковой длины и считать конкретную путем установки указателя на нужную ф-ей SetFilePointer не вызывает сложностей. Совместный доступ на чтение сам по себе прост. Правило которого следует придерживаться - первое открытие файла должно разрешать совместный доступ на чтение, а остальные открытия не противоречить друг другу в вопросах прав доступа. Например если вы открыли файл для чтения и записи, с произвольным доступом на чтение, а второй раз его пытаетесь открыть с разрешением произвольного доступа на чтение то это будет противоречить первому открытию, предусматривающему и запись тоже. Вот и вся тонкость

  • Профиль удален
    10 июня 2019, 5:42 |

    В том то и дело (как я уже писала), что строки неодинаковой длины.

    Например:

    заказ №3 13.04.2019 

    заказ №456 13.12.2199 

    Поэтому даже сплитить файл - это потеря, как минимум, одной "записи".

  • Игорь Ляльченко
    10 июня 2019, 8:13 |

    Ну а при неодинаковой длинне всегда полезно сперва составить карту строк. Массив смещений от начала. Иначе произвольный доступ к сотне байт, превратится в перечитывание 2гб

  • Игорь Ляльченко
    10 июня 2019, 8:38 |

    Ну а если не лабораторная (где выигрыш от многопоточности не в скорости чтения, а в скорости получения запроса), а чтение именно последовательное от начала и до конца.. то господа коллеги верно отметили - многопоточность сразу снизит скорость работы, так как после чтения одного блока, для чтения второго (того же самого фактически, ранее прочитанного) нужно будет дергать считывающие головки туда сюда и кроме жуткого рычания диска под нагрузкой не получите ничего интересного

  • Игорь Ляльченко
    10 июня 2019, 8:38 |

    *запроса=зачета

  • Евгений C
    10 июня 2019, 1:45 |

    Такое "многопоточное" чтение бессмысленно, т.к. приведёт не к увеличению скорости чтения, а наоборот -  к деградации, особенно если файл находится на жёстком диске. 

  • Игорь Ляльченко
    10 июня 2019, 1:53 |

    А вот вопрос.  Смотря какие цели. Чем ставить очередь на чтение к примеру не один-два запроса и с непредсказуемым доступом внутри файла, да ещё мелких объемов на чтение.. то скорость многопоточного варианта таки возрастет

  • Игорь Ляльченко
    10 июня 2019, 2:07 |

    Нет, безусловно, блины вращаться быстрее не станут от того что файл открыт 1000 раз. Это понятно ))

    Вопрос для чего это дальше. Но технически это возможно и не сложно придумать ситуацию, когда это хоть и не вызовет большей скорости работы железа, но это железо поднапряжет и что то из него таки выдавит сверх однопоточного.

  • Евгений C
    10 июня 2019, 2:50 |

    Да нет,  вы только проиграете по скорости, потому что скорость последовательного чтения как минимум на 2 порядка выше скорости случайного чтения. А при многопоточном чтении вы как раз и получите вариант случайного чтения данных с диск.

  • Игорь Ляльченко
    10 июня 2019, 8:09 |

    Если нужно последовательное (строго последовательное, напр речь о копировании файла) то да, безусловно правы.


    Так же если после чтения блока минимум обработки и мы готовы читать след.блок молниеносно  то тоже да, тоже правы.


    Ну а если речь о необходимости произвольного чтения что в один что в несколько потоков ? Или вариант когда требуется доп обработка перед тем как можно читать дальше и пока мы обрабатываем hdd простаивает? 


  • Вячеслав Азаров
    10 июня 2019, 6:27 |

    Нужно оптимизировать обработку потока файла, в алгоритме о котором вы не сказали ни слова. Открытие нескольких дескриторов не увеличит скорость обработки информации, физический диск то один.

  • Игорь Ляльченко
    10 июня 2019, 8:10 |

    Ну и ещё может не быть алгоритма а может быть задача по какой нибудь лабораторной ))

    В которой сказано - нужно многопоточно ))

  • Евгений C
    10 июня 2019, 9:42 |

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

  • Игорь Ляльченко
    10 июня 2019, 9:49 |

    согласен. почти всегда это возможно реализовать именно таким способом ))

    я лишь говорю что многопоточно это тоже возможно, хоть и под сомнением целесообразность. 

Актуальные фриланс-проекты в категории Десктопные приложения

Нужно достать POST / GET / PUT запросы с мобильного приложения TikTok срочно

По сути. Нужно достать POST / GET / PUT запросы с мобильного приложения TikTok Даже по суи можно до конца не реверсить ничего такого ибо подписи есть в интернете и т.д. Но было бы тоже супер Вся авторизация (Отправка данных/подтверждение по почте и ввод кода если…

Веб-программированиеДесктопные приложения ∙ 10 часов 3 минуты назад ∙ 11 ставок

Разработка кастомного ПО (Android-приложения + CMS) для киосков самообслуживания SUNMI K2 (Фастфуд)

1000 UAH

Ищем опытную команду или Middle/Senior Android-разработчика (возможно, с Full-stack навыками) для создания собственного программного обеспечения для киосков самообслуживания сети заведений быстрого питания. Сейчас наши терминалы работают на базе готового облачного интегратора,…

CMSДесктопные приложения ∙ 1 день 4 часа назад ∙ 17 ставок

Нужно сделать миграцию текущей рабочей программы с foxpro на C#

Всем привет! у нас есть программа на foxpro (в ней есть несколько модулей, программа для учета), есть исходники программы, при острой необходимости можно проконсультироваться с людьми по поддержке текущей программы что нужно сделать: 1. аналитику, что и как работает, составить…

C#Десктопные приложения ∙ 6 дней 12 часов назад ∙ 18 ставок

ПО Мастер-программа «KONSTRUCTOR»

185 490 UAH

Мы ищем очень опытного C++ разработчика для модернизации существующего ПО (мастер-программы). Программа отвечает за создание производного ПО представляющего аудио-визуальные сеансы психологической коррекции. Текущая версия написана на чистом WinAPI (Visual Studio 2019/2022).…

C и C++Десктопные приложения ∙ 9 дней назад ∙ 19 ставок

Настройка ODOO Enterprise для строительства

Необхідно побудувати картки та налаштувати зручний імпорт, інтеграцію з ЕДО і загалом Workflow ODOO Компанія займається системною інтеграцією: маємо поставки обладнання В2В або з прямою маржинальністю, або з рібейтами в подальшому. Крім того, ведемо будівельні роботи на об'єктах…

Автоматизация управления предприятиемДесктопные приложения ∙ 9 дней 10 часов назад ∙ 7 ставок

Заказчик
Проект опубликован
6 лет назад
159 просмотров