Автор Тема: [Процессы] Map Management - управление виртуальными файлами  (Прочитано 5283 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн joiner [?]

  • Расмус-бродяга
  • AutoIt Гуру
  • *****
  • Сообщений: 2759
  • Репутация: 464
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.12.0
В бета версии языка есть функции Map Management. Удобство их в том, что получить значение можно по имени ключа.
Не знаю как работают эти функции, но попробовал примерно реализовать это при помощи _WinAPI_CreateFileMapping
(нажмите для показа/скрытия)


« Последнее редактирование: Апрель 26, 2015, 04:20:55 от joiner »
Были времена, когда солнце было ярче, трава зеленее, а водка сорокоградуснее

Русское сообщество AutoIt


Оффлайн inververs [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 2135
  • Репутация: 461
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.12.0
В чем полезняшка то?

Оффлайн joiner [?]

  • Расмус-бродяга
  • AutoIt Гуру
  • *****
  • Сообщений: 2759

  • Автор темы
  • Репутация: 464
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.12.0
 использовать вызов значения из адресного пространства по имени "ключа" (вроде ж написал в первом сообщении)
ну и удалять. все в сравнении работы с массивом
« Последнее редактирование: Апрель 26, 2015, 11:02:27 от joiner »

Оффлайн inververs [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 2135
  • Репутация: 461
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.12.0
Это что очередное key value хранилище, но вы сделали это через _WinAPI_CreateFileMapping и зачем? Только что бы было? :)
Вот вам еще одно такое же...

Код: AutoIt [Выделить]
set('dddd', 123)
ConsoleWrite(get('dddd') & @CRLF)
Func set($data, $value)
    Assign('_storage_' & $data, $value, 2)
EndFunc
Func get($data)
    Return Eval('_storage_' & $data)
EndFunc


Русское сообщество AutoIt

Re: [Процессы] Map Management - управление виртуальными файлами
« Ответ #3 Отправлен: Апрель 26, 2015, 11:07:30 »

Оффлайн joiner [?]

  • Расмус-бродяга
  • AutoIt Гуру
  • *****
  • Сообщений: 2759

  • Автор темы
  • Репутация: 464
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.12.0
пример чуть переделал
(нажмите для показа/скрытия)
взято сравнение составление массива с заполнением и создание виртуальных файлов
результаты теста
61494.1353058005 - составление массива 10 000 элементов с заполнением
  2609.35162699179 - создание 10 000 вирт. файлов с заполнением
     19.8788554902482 - поиск последнего элемента в массиве по имени
       0.507613520065925 - выведение значения по имени вирт. файла
« Последнее редактирование: Апрель 26, 2015, 11:25:35 от joiner »

Оффлайн inververs [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 2135
  • Репутация: 461
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.12.0
Если вы так составляете массив из известного количества элементов:
Код: AutoIt [Выделить]
For $i = 0 To 10000
    ReDim $ArrayDoc[$i + 1][2] ;Внимание аноним, это ахтунг. Никогда так не писать!
    $ArrayDoc[$i][0] = 'док' & $i + 1
    $ArrayDoc[$i][1] = 'содержание' & $i + 1
Next
 

то у меня для вас печальные новости  ;D
У меня массив из 10 тыс элементов составляется за 79.208  мс.

Оффлайн joiner [?]

  • Расмус-бродяга
  • AutoIt Гуру
  • *****
  • Сообщений: 2759

  • Автор темы
  • Репутация: 464
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.12.0
inververs  [?]
Цитировать
то у меня для вас печальные новости
неужели? :)
а я разве говорил, что заранее известно? ведь специально указал
Код: AutoIt [Выделить]

Оффлайн inververs [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 2135
  • Репутация: 461
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.12.0
:rofl:
REDIM в вашем цикле это 10000 повторить операцию: сохранить где то данные, очистить массив, создать массив на 1 больше, заполнить его ранее созданными данными, дописать в конец еще 'док' & $i + 1. и так 10000 раз. Вам может быть не понятно, но redim в цикле это как бегать 10000 раз в магазин покупая по 1 предмету.
И мне кажется For $i=1 To 10000  и
joiner  [?]
Цитировать
что заранее известно
как то противоречат друг другу.


Добавлено: Апрель 26, 2015, 11:50:51
В общем, что хочу сказать. Что ваши тесты не коректны.

Русское сообщество AutoIt

Re: [Процессы] Map Management - управление виртуальными файлами
« Ответ #7 Отправлен: Апрель 26, 2015, 11:50:08 »

Оффлайн joiner [?]

  • Расмус-бродяга
  • AutoIt Гуру
  • *****
  • Сообщений: 2759

  • Автор темы
  • Репутация: 464
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.12.0
inververs  [?]
Цитировать
как то противоречат друг другу.
повторю еще раз
специально указал ReDim, подразумевая, что неизвестно конечное количество строк массива.но пример ограничил в 10 000 строк. я знаю принцип работы пересоздания массива
OffTopicвроде на русском общаемся

[?]
Цитировать
;Внимание аноним, это ахтунг. Никогда так не писать!
здесь поясни. почему так нельзя писать



Добавлено: Апрель 26, 2015, 12:54:27
пример в первом сообщении написал исходя из своего проекта. смысл в том, чтобы иметь не одно значение, а несколько. для этого использовал структуру как хранилище.
подключаюсь к вирт. файлу по имени (имя может иметь различные символы любого языка). подключился и получил структуру, в которой может быть несколько значений .
возможно, мой вариант не оптимальный.
« Последнее редактирование: Апрель 26, 2015, 12:55:27 от joiner, Причина: Объединение сообщений »

Оффлайн madmasles [?]

  • Глобальный модератор
  • *
  • Сообщений: 7790
  • Репутация: 2317
  • Пол: Мужской
  • Награды За модерирование форума
    • Награды
  • Версия AutoIt: 3.3.x.x
joiner,
А чем Вас не устраивает Scripting.Dictionary, если Вы не хотите использовать Map* функции из бета-версии?

Оффлайн joiner [?]

  • Расмус-бродяга
  • AutoIt Гуру
  • *****
  • Сообщений: 2759

  • Автор темы
  • Репутация: 464
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.12.0
я сторонник нативных функций. и воспользовался бы Map из бета-версии, но в бетке есть серьезный баг работы с файловой системой(обсуждали в теме бета-версий), а для меня это решающий момент использование версии языка.

madmasles  [?]
Цитировать
А чем Вас не устраивает Scripting.Dictionary
да я не против. просто изобразил по своему

P.S.если все как-то никак, то могу удалить тему.в принципе, все преходящее

Оффлайн Garrett [?]

  • Глобальный модератор
  • *
  • Сообщений: 3999
  • Репутация: 960
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
joiner  [?]
Цитировать
то могу удалить тему
Не стоит.
Ваш пример можно использовать как способ передачи данных между процессами.

Скорблю и помню.




Русское сообщество AutoIt

Re: [Процессы] Map Management - управление виртуальными файлами
« Ответ #11 Отправлен: Апрель 26, 2015, 14:36:11 »

 

Похожие темы

  Тема / Автор Ответов Последний ответ
6 Ответов
3115 Просмотров
Последний ответ Октябрь 01, 2011, 22:02:42
от Trans
0 Ответов
1878 Просмотров
Последний ответ Октябрь 01, 2011, 10:49:48
от madmasles
9 Ответов
5621 Просмотров
Последний ответ Май 21, 2013, 02:00:28
от Astel064
5 Ответов
2985 Просмотров
Последний ответ Июнь 14, 2013, 19:13:12
от firex
7 Ответов
1603 Просмотров
Последний ответ Январь 23, 2015, 13:19:12
от joiner
6 Ответов
1546 Просмотров
Последний ответ Июнь 20, 2015, 23:25:41
от InnI
2 Ответов
1000 Просмотров
Последний ответ Сентябрь 19, 2016, 22:53:33
от defens
2 Ответов
845 Просмотров
Последний ответ Январь 30, 2017, 09:44:15
от ra4o
2 Ответов
421 Просмотров
Последний ответ Июнь 26, 2017, 11:49:19
от labudator
3 Ответов
784 Просмотров
Последний ответ Июль 06, 2017, 12:24:10
от joiner