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 |

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

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

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

Нужен Airtable-архитектор для построения реляционной схемы и новой чистой базы Airtable

Необходимо помочь переосмыслить и построить чистую реляционную схему для внутренней операционной системы на Airtable. Текущая база уже используется командой, но она выросла органически: структура частично плоская, часть таблиц/вьюшек используется активно, часть почти не…

Базы данных и SQLДесктопные приложения ∙ 1 день 3 часа назад ∙ 9 ставок

Создание ПО для генерации файлов резки деревянных пазлов

Ищем разработчика для создания программного обеспечения, которое автоматизирует процесс построения файлов резки для деревянных фигурных пазлов. Текущий процесс Сейчас каждый файл создается дизайнером вручную в Adobe Illustrator. Файл содержит: внешний контур пазла произвольной…

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

Небольшая правка на сайте

700 UAH

Нужно переподвизать договор оферты в футтере на новый , в компании поменялся регламент Задача на 20 минут

Веб-программированиеДесктопные приложения ∙ 2 дня 9 часов назад ∙ 107 ставок

Инструмент сверки счетов с банком, картами и бухгалтером

Техническое задание: инструмент сверки счетов с банком, картами и бухгалтеромОбщая цель Нужен локальный инструмент (скрипт/небольшое приложение на Python), который запускается вручную раз в 1-2 месяца на моём компьютере и делает сверку между: Счетами, которые я выставил клиентам…

PythonДесктопные приложения ∙ 4 дня 16 часов назад ∙ 43 ставки

Добавить паузы 10-30 секунд между отправками писем

Здравствуйте! Ищу опытного программиста 1С / BAS (BAF) для оперативного решения технической проблемы с почтовой рассылкой.Суть проблемы: Используем бухгалтерскую программу BAF (Business Automation Framework), редакция 2.0. Раз в месяц возникает необходимость массово отправлять…

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

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