sivsoft На зилоге небыло команд переноса в памяти блоков. В последствии на камнях с расширениями(DB префикс вроде, их ввели 2 для расшаривания системы команд) были введены инструкции типо ldir. Не годится. Нужно определить выравнивание на 4 байта и использовать movsd. Сейчас производительность не определяется в тактах. Время исполнения инстуркций зависит от многих факторов, темболее если мультизадачная ось.
kejcerfcrv видно я совсем отстал - не посоветуете чтобы можно почитать - такого основательного, чтобы разобраться: 1. в сегодняшнем асме. 2. строки - но тут бы подробнее за паскалевские в С++ - потому как где не читаю все говорят о том, что паскалевские строки лучше, С плохие, но не нашел ни ссылок на какие-нить либы, ни вообще каких-то готовых решений.
Booster вы не совсем правы. Паскалевские строки разные - теже строки в C++ Builder - 65536 обычные, а максимально - 4 294 967 295 символов - можно я не знаю - книги туда пачками пихать и при этом все летает. Идея паскалевских строк в том что размер строки ложится в первые 1,2,4 байта - в зависимости от максимальной размерности строк, а далее идут сами символы. В чем же профит? А в том что в C/C++ компилер не знает где заканчивается строка и для того, чтобы узнать длину строки, копировать строку, сложить строку да и вообще практически любые операции со строками - приходится проблегать ее всю до достижения символа 0. Что понятно замедляет работу значительно и в прогрессии. Когда одна, 10 строк - разницы особой не будет, нет она будет конечно, но незаметная, а когда 100-ни, 1000-чи, 1000000-ны строк - тогда уже тупит по страшному
sivsoft Да ладно, проблема надумана, даже мой учитель информатики об этом когда-то говорил. Могу завтра у него уточнить.
_DEN_ ну чего - приведу известную статью Джоэла: http://russian.joelonsoftware.com/Articles/BacktoBasics.html заодно посмеетесь
sivsoft Я публично обосрал ASCIIZ-строки по тем же поводам лет на 7 раньше PS Ой, нет, не на семь. Примерно в то же время - статья старая.
CyberManiac и чем вы пользуетесь по прошествии такого времени? нашли какое-нить решение? да старая - 2001 года по-моему - Шуми тогда в 4-ый раз чемпионом стал
sivsoft Delphi, разумеется. Когда-то давно написал библиотечку на MASM, но она была очень ограниченная: создать строку из ASCIIZ-строки, сложить две строки и найти подстроку в строке. Правда для той задачи больше и не требовалось.
kejcerfcrv еле живот удержал - мда - если нашим бухам - за себя молчу - показывать по телевидению, что иногда принтер может печать, то тогда уж точно все не то что на Нибиру, а в Нирвану улетят, хотя эта тетка точно уже там
CyberManiac а вот я хочу С/С++, но не Билдер, Билдером я пользуюсь для быстрого написания прог. Кстати многие .Нетовцы удивятся, но пишется быстрее чем в ЦКрестах
strlen как раз можно и двордами (и даже по 16 байт на SSE2). А вот memcpy и strcat оперируют двумя указателями, из которых один или оба в общем случае могут быть невыравненными, поэтому приходится их анализировать и выбирать оптимальный\подходящий вариант копирования, и соотв-но для сравнительно коротких строк вся эта предв.и пост-обработка может сожрать весь выигрыш - соотв-но дело не только в кол-ве обрабатываемых строк, но и в их средней длине
Booster дык считаешь сколько можно "двордами" а конец побайтово. Если строка длиннее сколькито ( опытом надо устанавливать ) байт, будет эффективно. Хотя я говорил про копирование, а не про strlen
Booster я уже исправил, невнимательно посмотрел, а так присоединяюсь к вопросу, что делать если выйдем за границу.