12rbah, Универсального алгоритма на все случаи жизни нет.
Задача в вашей постановке оторвана от реальности. Вполне возможно, что это удаление дубликатов по итогу занимает 1% от времени работы программы, и лучший выигрыш можно получить, оптимизировав хранение этих данных.
Все зависит от того, какие строки (какой длины), сколько их, сколько у вас ресурсов на реализацию, как строки хранятся изначально, в какой они кодировке.
Begginer_serg, вы прочитали объяснения, которые вам дали я и другие люди? Данный вопрос уже примерно 30 лет (i486 появился в 1989 году) не актуален, так как процессоры стали гораздо более сложными, и время выполнения того или иного куска кода стало зависеть от очень большого количества факторов, уследить за всей совокупностью которых - задача, сложность которой превосходит практический выхлоп от этого.
Если вы хотите достойно сдать лабораторку, вы можете написать длинное-длинное эссе на тему того, что процессоры за 30 лет шагнули сильно вперед (а ваш препод - нет), и получить актуальные знания. Вы можете найти писюк с i386 - последним из могикан, который был настоящим CISC, и не конвертировал свои инструкции в RISC - и таки сделать на нем честные замеры, включая и отключая кэш, например.
Begginer_serg, к сожалению для вас, благодарность мне за выполнение вместо вас лабораторки, устаревшей примерно на 30 лет, измеряется в долларах по очень невыгодному курсу. Контакты в профиле, если надумаете.
Begginer_serg, Вам уже два специалиста, в том числе и я, сказали, что вы пытаетесь решить нерешаемую задачу, по причине запредельной сложности изучаемого вами объекта.
Если вы возьмете процессор попроще, например, AVR восьмибитный, там прямо в даташите будет прописано, какая инструкция сколько тактов выполняется.
Современный Интел, который снаружи CISC, а унутре RISC - не имеет четкой связи между инструкциями и временем их исполнения, так как перегоняет при помощи встроенного в процессор транслятора все вот эти mov, в свои внутренние RISC инструкции. Так что тут непонятно даже, что считать тактом. Потому что пока процессор проскочит одну инструкцию, он может нащелкать сотню внутренних тактов. А при следующем выполнении той же инструкции, он дернет данные из кэша и прождет всего два такта. Какой результат будем брать?
АртемЪ, Выставить голый RDP в Интернет без авторизации по клиентскому сертификату - это очень плохая идея. А с учетом наличия дыр вроде этой - просто вредная.
Shenter, Задержка будет не меньше 10 миллисекунд, ровно столько времени нужно на то, чтобы закодировать один кадр HD 1920x1080. Плюс задержка сети, от 0.5 миллисекунд для локальной сети и до 150 миллисекунд для интернета.
При лаге более 30 миллисекунд все станет неиграбельным.