Гость
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Аналог оператора DATA в C# / 18 сообщений из 18, страница 1 из 1
14.11.2016, 01:36
    #39346551
Eolt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аналог оператора DATA в C#
В PowerBASIC`е есть оператор DATA, он позволяет разместить строковые литералы в read-only data segment , в пределах секции .text скомпилированного EXE файла:
Код: vbnet
1.
2.
3.
Data "10FED40032202033202034202035202036202037A3032202033202034202035202036202037A3"
Data "20FEE4002020382020392020412020422020432077032202033202034202035202036202037A3"
Data "30FEF40020442020452020462020204153434949C6032202033202034202035202036202037A3"


Чтобы на этапе запуска приложения эти данные были сразу помещены в секцию .data и доступны немедленно, без копирования, выделений памяти и прочих накладных расходов.

Как в шарпе сделать подобное хранение строк? Не базы, не файлы, не ресурсы. Так как слишком медленно. А сразу в initialized data segment процесса. Нужна максимальная скорость доступа к данным.
...
Рейтинг: 0 / 0
14.11.2016, 02:43
    #39346558
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аналог оператора DATA в C#
Eolt,

Константы? Или это тоже медленно?
...
Рейтинг: 0 / 0
14.11.2016, 08:50
    #39346588
Сон Веры Павловны
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аналог оператора DATA в C#
Eolt,

строковые константы при запуске приложения интернируются, дальнейшая работа с ними сводится только к получению ссылки из пула интернирования. Вам этого недостаточно?
...
Рейтинг: 0 / 0
14.11.2016, 10:46
    #39346647
Eolt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аналог оператора DATA в C#
авторКонстанты? Или это тоже медленно?

вот пытаюсь понять. Хочу перетащить своего старого бота для генерации текстов, на .Net платформу.


Сон Веры ПавловныEolt,

строковые константы при запуске приложения интернируются

Первый раз слышу такой термин. Как они хранятся в адресном пространстве процесса?
Если это сегмент данных, то BSS или Data (uninitialized/ininitialized) часть ?
...
Рейтинг: 0 / 0
14.11.2016, 10:58
    #39346661
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аналог оператора DATA в C#
Eoltвот пытаюсь понять. Хочу перетащить своего старого бота для генерации текстов, на .Net платформу.

Если говорить о скорости, то константы в .NET это максимально быстро, быстрее чем ресурсы и БД. Теперь о требованиях, сколько именно там данных, создаём нулёвый проект, запихиваем всё что требуется в константы и проводим испытания, на скорость запуска и на скорость доступа к константам с момента запуска.


EoltЕсли это сегмент данных, то BSS или Data (uninitialized/ininitialized) часть ?

Константы хранятся прямо в IL. Терминология упаковки стандартных исполняемых файлов здесь не подходит. Можешь попробовать скомпилить сборку с помощью ngen и посмотреть чего куда складывается. Если эта часть и документирована, то я информации не нашёл.
...
Рейтинг: 0 / 0
14.11.2016, 11:25
    #39346702
Сон Веры Павловны
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аналог оператора DATA в C#
hVosttКонстанты хранятся прямо в IL.
Хранятся-то они там, но вот в кучу (а потом в интерн-пул) они при старте программы грузятся всё тем же ldstr.
...
Рейтинг: 0 / 0
14.11.2016, 11:34
    #39346713
Roman Mejtes
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аналог оператора DATA в C#
эти расходы смехотворны, вы загоняетесь на оптимизации ) или обоснуйте нафига это вообще :)
...
Рейтинг: 0 / 0
14.11.2016, 13:20
    #39346800
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аналог оператора DATA в C#
Сон Веры ПавловныhVosttКонстанты хранятся прямо в IL.
Хранятся-то они там, но вот в кучу (а потом в интерн-пул) они при старте программы грузятся всё тем же ldstr.

Ну естественно грузятся. Чтобы с чем-то начать работать, надо это загрузить
...
Рейтинг: 0 / 0
14.11.2016, 14:22
    #39346861
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аналог оператора DATA в C#
hVosttНу естественно грузятся. Чтобы с чем-то начать работать, надо это загрузить
способы загрузки -разные

ну не использует c# в исполняемом файле Readonly Initialized Data Segment аналогично С-шным программам.

EoltТак как слишком медленно.
не верю (с)
...
Рейтинг: 0 / 0
14.11.2016, 14:42
    #39346885
Arm79
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аналог оператора DATA в C#
EoltНе базы, не файлы, не ресурсы. Так как слишком медленно
слишком медленно для бота ??
...
Рейтинг: 0 / 0
14.11.2016, 14:42
    #39346886
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аналог оператора DATA в C#
ИзопропилhVosttНу естественно грузятся. Чтобы с чем-то начать работать, надо это загрузить
способы загрузки -разные

ну не использует c# в исполняемом файле Readonly Initialized Data Segment аналогично С-шным программам.

EoltТак как слишком медленно.
не верю (с)

А если положить в константы пару гигов данных или больше?
...
Рейтинг: 0 / 0
14.11.2016, 15:12
    #39346906
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аналог оператора DATA в C#
Eolt, почитай https://habrahabr.ru/post/224281/
Если кратко, то интернирование позволяет сравнивать только ссылки на объект string, без сравнения содержимого.
...
Рейтинг: 0 / 0
14.11.2016, 15:31
    #39346923
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аналог оператора DATA в C#
EoltХочу перетащить своего старого бота для генерации текстов, на .Net платформу.
Ты бы поподробней описал что твой бот с этими строками делает. Может достаточно просто массива string[] с заполнением при старте.
...
Рейтинг: 0 / 0
14.11.2016, 15:39
    #39346937
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аналог оператора DATA в C#
Dima T,

А может нужен самый быстрый старт на свете?
...
Рейтинг: 0 / 0
14.11.2016, 15:54
    #39346953
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аналог оператора DATA в C#
hVosttА может нужен самый быстрый старт на свете?
Может. Тогда самый быстрый старт - стартануть при включении компа и висеть в ожидании запросов.
...
Рейтинг: 0 / 0
14.11.2016, 16:09
    #39346966
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аналог оператора DATA в C#
Dima TТогда самый быстрый старт - стартануть при включении компа
без стебелька - никак
...
Рейтинг: 0 / 0
14.11.2016, 21:30
    #39347128
Cat2
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аналог оператора DATA в C#
hVosttИзопропилпропущено...

способы загрузки -разные

ну не использует c# в исполняемом файле Readonly Initialized Data Segment аналогично С-шным программам.

пропущено...

не верю (с)

А если положить в константы пару гигов данных или больше?
То такого программиста надо сразу переквалифицировать в менеджеры по пылесосам
...
Рейтинг: 0 / 0
14.11.2016, 22:09
    #39347145
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Аналог оператора DATA в C#
Cat2То такого программиста надо сразу переквалифицировать в менеджеры по пылесосам
не, пущай сначала пример в студию
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Аналог оператора DATA в C# / 18 сообщений из 18, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]