Важная информация

User Tag List

Страница 3 из 13 ПерваяПервая 1234567 ... ПоследняяПоследняя
Показано с 21 по 30 из 124

Тема: Как организовать память для текстового редактора?

  1. #21
    R.I.P.
    Регистрация
    16.09.2009
    Адрес
    г. Харьков
    Сообщений
    1,466
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    4
    Поблагодарили
    4 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от jerri Посмотреть сообщение
    Для чего?
    Зачем на машине с 16к свободной памяти редактировать тексты больше чем 16 к?
    в случае если редактор ТОЛЬКО для конкретной машины/случая - може и не стоит
    но MIM был (и использовался для работы с БОЛЬШИМИ текстами)
    на Ямахе/Корвете/УКНЦ/СМхх
    у нас преподы набирали методички в нем, и очень ценили что есть ОДИН файл а не кучка.

    хотя это вопрос привычки конечно

    в том-же мим очень не привычная для большинства схема копирования/вставки, отдельные буфера для "символов"/"строк"/"кадратных блоков"

    при этом уже тогда (1988 как минимум)
    было Undo/Redo
    Квадратные блоки
    "бесконечный" текст
    "псевдо директории"

  2. #22
    Guru Аватар для jerri
    Регистрация
    01.03.2005
    Адрес
    Samara
    Сообщений
    4,751
    Спасибо Благодарностей отдано 
    256
    Спасибо Благодарностей получено 
    266
    Поблагодарили
    200 сообщений
    Mentioned
    12 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    вопрос в том
    зачем сейчас писать такой редактор?
    сфера применения?
    С уважением,
    Jerri / Red Triangle.

  3. #23
    R.I.P.
    Регистрация
    16.09.2009
    Адрес
    г. Харьков
    Сообщений
    1,466
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    4
    Поблагодарили
    4 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Vitamin Посмотреть сообщение
    Ага. Все одинаково тормозит
    нет, с чего бы

    Цитата Сообщение от Vitamin Посмотреть сообщение
    Что такое локальное редактирование и где оно медленное?
    пример(только что открыл на корвете редактор E, там оказалась обычная вставка в текст со сдвигом)
    открываем большой текст (~30k, почти вся память свободная у редактора)
    в начале текста добавляем строку
    пока редактируем ее - все быстро и хорошо
    как только выходим из строки (например вниз)
    сразу ЗАМЕТНАЯ пауза на копирование хвоста текста


    Цитата Сообщение от Vitamin Посмотреть сообщение
    Ну да. В предлагаемой схеме перемещение по тексту будет стоить. В обычных редакторах- не стОит (тупо поиск следующего/предыдущего перевода строки).
    так прикол в том что в обычной жизни большие копирования будут только в местах где пользователь их нормально воспринимает (типа переход в другой конец текста)
    зато при локальном редактировании (в пределах экрана) паузы нет вообще
    а при PgUp/Dn она минимальна но тоже вполне ожидаема пользователем)

    ---------- Post added at 10:21 ---------- Previous post was at 10:19 ----------

    Цитата Сообщение от jerri Посмотреть сообщение
    вопрос в том
    зачем сейчас писать такой редактор?
    сфера применения?
    как в том анекдоте, ну во первых это красиво
    писать сейчас что угодно для тех компов - чистый фан
    а вариант - не более чем альтернатива плоскому тексту

  4. #24
    Banned
    Регистрация
    01.12.2010
    Адрес
    г. Санкт-Петербург
    Сообщений
    1,657
    Записей в дневнике
    21
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Vitamin Посмотреть сообщение
    Что такое локальное редактирование и где оно медленное?
    Добавление символов к конец строки под курсором выполняется за одну команду процессора. При этом, не требуется куча, не возникает фрагментации памяти, строки в памяти лежат всегда по порядку и плотно, поэтому сохранять файл можно одним обращением к ОС.

    Медленно будет, если мы каждую строку разместим в динамической куче. При этом 50% ОЗУ из из фрагментации может оказаться недоступным, а при увеличении строки придется выделать новый кусок из кучи. А это долго по факту. Это основная причина тормозов Java/.NET на современных компах, не то что 8080

    ---------- Post added at 10:25 ---------- Previous post was at 10:22 ----------

    Причем, этот способ можно считать вообще бестормозным. Ибо скорость отрисовки целого экрана будет меньше, чем скорость копирования 30 Кб текста в ОЗУ.
    Последний раз редактировалось vinxru; 02.04.2013 в 12:11.

  5. #25
    Vitamin C++ Аватар для Vitamin
    Регистрация
    14.01.2005
    Адрес
    Таганрог, Россия
    Сообщений
    4,254
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    80
    Поблагодарили
    34 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от esl Посмотреть сообщение
    нет, с чего бы
    Потому что при навигации по тексту придется перебрасывать блоки памяти из начала в конец.

    Цитата Сообщение от esl Посмотреть сообщение
    пример(только что открыл на корвете редактор E, там оказалась обычная вставка в текст со сдвигом)
    открываем большой текст (~30k, почти вся память свободная у редактора)
    в начале текста добавляем строку
    пока редактируем ее - все быстро и хорошо
    как только выходим из строки (например вниз)
    сразу ЗАМЕТНАЯ пауза на копирование хвоста текста
    Сделай то же самое на acedit. Текст можешь 64к сделать.

    Цитата Сообщение от esl Посмотреть сообщение
    так прикол в том что в обычной жизни большие копирования будут только в местах где пользователь их нормально воспринимает (типа переход в другой конец текста)
    Вопрос в другом- во имя чего эти копирования? Если я листаю постранично, ожидаю, что бОльшая часть процессорного времени уйдет на перерисовку, а не на невнятное копирование из пустого в порожнее.

    ---------- Post added at 11:30 ---------- Previous post was at 11:26 ----------

    Цитата Сообщение от vinxru Посмотреть сообщение
    Добавление символов к конец строки под курсором выполняется за одну команду процессора. При этом, не требуется куча, не возникает фрагментации памяти, строки в памяти лежат всегда по порядку и протно, поэтому сохранять файл можно одним обращением к ОС.

    Медленно будет, если мы каждую строку разместим в динамической куче. При этом 50% ОЗУ из из фрагментации может оказаться недоступным, а при увеличении строки придется выделать новый кусок из кучи. А это долго по факту. Это основная причина тормозов Java/.NET на современных компах, не то что 8080
    А разумно подходить не пробовал к вопросу? Или только как в рекламе "опустим газету в серную кислоту, а журнал в дистиллированную воду".

    Назови хоть один plain текстовый редактор, в котором используется фрагментарное хранение текста. Желательно на тормозном Java/.NET

  6. #26
    ZEK
    Гость

    По умолчанию

    Цитата Сообщение от vinxru Посмотреть сообщение
    Это основная причина тормозов Java/.NET
    наоборот в .net/java память в куче выделяется мгновенно, там же сборщик дефрагментирует

  7. #27
    R.I.P.
    Регистрация
    16.09.2009
    Адрес
    г. Харьков
    Сообщений
    1,466
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    4
    Поблагодарили
    4 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Vitamin Посмотреть сообщение
    Назови хоть один plain текстовый редактор, в котором используется фрагментарное хранение текста. Желательно на тормозном Java/.NET
    сейчас (когда много памяти) этого делать нет вообще смысла
    дешевле построить связные списки
    а тут речь в борьбе за каждый такт

    кстати, про скорость, посчитал тут
    на 8080 ldir одного байта - 48 тактов
    и для корвета получаем время в фреймах
    >>> 16к*1024*48/50000
    15
    >>> 30к*1024*48/50000
    29
    30 фреймов это почти пол секунды, уже ОЧЕНЬ заметно

    хотя кому мы тут доказываем, речь про те машины
    и про время обновление экрана занимающего много меньше времени
    как в текстовом режиме на корвет/msx,
    в графике отрисовка займет заметно больше

  8. #28
    Vitamin C++ Аватар для Vitamin
    Регистрация
    14.01.2005
    Адрес
    Таганрог, Россия
    Сообщений
    4,254
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    80
    Поблагодарили
    34 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от esl Посмотреть сообщение
    сейчас (когда много памяти) этого делать нет вообще смысла
    дешевле построить связные списки
    Вот я и говорю- назови plain текстовый редактор на Java/.NET, где используется хранение редактируемого текста в виде связных списков.

    Цитата Сообщение от esl Посмотреть сообщение
    30 фреймов это почти пол секунды, уже ОЧЕНЬ заметно
    А кто сказал, что необходимо блокировать все на время переброски данных? Что мешает заполнить буфер редактирования следующей строкой и дать пользователю его дальше редактировать? Например, редактирование на прерываниях, переброска- в основном режиме.

  9. #29
    R.I.P.
    Регистрация
    16.09.2009
    Адрес
    г. Харьков
    Сообщений
    1,466
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    4
    Поблагодарили
    4 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Vitamin Посмотреть сообщение
    Вот я и говорю- назови plain текстовый редактор на Java/.NET, где используется хранение редактируемого текста в виде связных списков.
    я думаю что основная масса plain редакторов просто вызывает метод "редактируй мне этот буфер" и не парится

    Цитата Сообщение от Vitamin Посмотреть сообщение
    А кто сказал, что необходимо блокировать все на время переброски данных? Что мешает заполнить буфер редактирования следующей строкой и дать пользователю его дальше редактировать? Например, редактирование на прерываниях, переброска- в основном режиме.
    фигасе, да такая схема будет в РАЗЫ сложнее любых буферов
    тем более что как я понимаю на целевом компе (специалист) вообще нет прерываний

  10. #30
    Vitamin C++ Аватар для Vitamin
    Регистрация
    14.01.2005
    Адрес
    Таганрог, Россия
    Сообщений
    4,254
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    80
    Поблагодарили
    34 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от esl Посмотреть сообщение
    я думаю что основная масса plain редакторов просто вызывает метод "редактируй мне этот буфер" и не парится
    Ну и как работает редактирование-то?

    Цитата Сообщение от esl Посмотреть сообщение
    фигасе, да такая схема будет в РАЗЫ сложнее любых буферов
    тем более что как я понимаю на целевом компе (специалист) вообще нет прерываний
    Твоя схема тоже сложнее, нежели редактирование сплошного куска. Всему своя цена. Разве на 8080 нет прерываний?

Страница 3 из 13 ПерваяПервая 1234567 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Алгоритм текстового Quest'a
    от ALKO в разделе Программирование
    Ответов: 11
    Последнее: 23.12.2010, 00:47
  2. Как проще код из текстового файла -> Alasm-файл?
    от TomCaT в разделе Программирование
    Ответов: 10
    Последнее: 28.05.2010, 16:53
  3. Адаптация текстового редактора
    от Raydac в разделе Софт
    Ответов: 1
    Последнее: 09.06.2008, 14:27
  4. Интересная идея текстового интерфейса в играх
    от Black_Cat в разделе Программирование
    Ответов: 3
    Последнее: 18.11.2006, 15:22
  5. Проект муз. редактора для AY
    от Bulba в разделе Музыка
    Ответов: 36
    Последнее: 09.09.2005, 20:32

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •