Как создать миллион объектов типа текст
В цикле. Только не уверен, что памяти хватит.
, но удалить повторяющиеся переменные типа цвет и размер текста, сократив параметры с максимума до необходимых?
Я так понимаю, с первой частью вопроса это никак не связано. Здесь речь об аргументах функции? Если да, то где тут повторяющиеся аргументы? Если же речь о том, как вызывать эту функцию, то ее можно вызвать вообще ничего не передавая. У нее все аргументы имеют значения по умолчанию. Только в таком случае будет создаваться один и тот же объект, т. е. первый раз он создастся, а далее - нет, т. к. уже существует.
Как создать миллион объектов типа текст, но удалить повторяющиеся переменные типа цвет и размер текста, сократив параметры с максимума до необходимых?
Достаточно всего 3 параметра.
- Имя объекта // name
- Время координаты // time
- Цена координаты. // price
И если нет необходимости отдельно вписывать текст, то сразу и текст передать… // text
В цикле. Только не уверен, что памяти хватит.
Я так понимаю, с первой частью вопроса это никак не связано. Здесь речь об аргументах функции? Если да, то где тут повторяющиеся аргументы? Если же речь о том, как вызывать эту функцию, то ее можно вызвать вообще ничего не передавая. У нее все аргументы имеют значения по умолчанию. Только в таком случае будет создаваться один и тот же объект, т. е. первый раз он создастся, а далее - нет, т. к. уже существует.
Да, вы правы, с первой частью вопроса это действительно напрямую не связано. Речь шла о повторяющихся значениях параметров, таких как цвет и размер текста, которые часто используются в нескольких объектах. Идея заключалась в том, чтобы не передавать их каждый раз, а хранить в одном месте и переиспользовать, что позволит сократить объем памяти, особенно если объектов много.
Что касается аргументов функции, они действительно имеют значения по умолчанию, и это удобно. Но если использовать одни и те же параметры (например, одинаковый шрифт и цвет) для множества объектов, то эти значения будут дублироваться в памяти.
Использование общих переменных или шаблонов стилей поможет избежать этого дублирования. Например, можно создать один раз стиль текста и ссылаться на него при создании объектов. Это и есть суть паттерна Flyweight: разделять общие данные между несколькими объектами.
Таким образом, идея не в том, чтобы оптимизировать вызов функции, а в том, чтобы уменьшить объем дублирующихся данных в памяти.
Да, вы правы, с первой частью вопроса это действительно напрямую не связано. Речь шла о повторяющихся значениях параметров, таких как цвет и размер текста, которые часто используются в нескольких объектах. Идея заключалась в том, чтобы не передавать их каждый раз, а хранить в одном месте и переиспользовать, что позволит сократить объем памяти, особенно если объектов много.
Что касается аргументов функции, они действительно имеют значения по умолчанию, и это удобно. Но если использовать одни и те же параметры (например, одинаковый шрифт и цвет) для множества объектов, то эти значения будут дублироваться в памяти.
Использование общих переменных или шаблонов стилей поможет избежать этого дублирования. Например, можно создать один раз стиль текста и ссылаться на него при создании объектов. Это и есть суть паттерна Flyweight: разделять общие данные между несколькими объектами.
Таким образом, идея не в том, чтобы оптимизировать вызов функции, а в том, чтобы уменьшить объем дублирующихся данных в памяти.
У каждого графического объекта все эти свойства имеются. Нет разницы, устанавливается соответствующее свойство объекту или нет. Если не устанавливаете, то свойство от этого никуда не денется, оно все равно существует (и занимает память, соответственно). Просто значение этого свойства будет по умолчанию. Таким образом, вызов функции с одним значением или с десятью никак на расход памяти не повлияет. Может повлиять на быстродействие, но, на мой взгляд, совершенно несущественно. Так что по сути этого вопроса беспокоиться нечего.
Беспокоиться нужно именно насчет количества объектов. Даже если на их поддержку у терминала хватит памяти, то такое количество объектов может ощущаться в виде некоторого (или даже существенного) подтормаживания платформы.
Поэтому лучше переосмыслить подход к решению задачи. Одним из таких способов может стать использование Canvas. Или же, по его типу, не создавать те графические объекты, которые в данный момент находятся за пределами видимой части графика, оперативно отображая и удаляя их в момент перемещения графика.
Использование общих переменных или шаблонов стилей поможет избежать этого дублирования. Например, можно создать один раз стиль текста и ссылаться на него при создании объектов. Это и есть суть паттерна Flyweight: разделять общие данные между несколькими объектами.
Таким образом, идея не в том, чтобы оптимизировать вызов функции, а в том, чтобы уменьшить объем дублирующихся данных в памяти.
Вы получается сами отвечаете на свой вопрос? Если в курсе про паттерны, то добавьте ещё паттерн Builder (а-ля, Object << "name" << "text" << x << y; -- заполняются только используемые свойства) и получите решение.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Как создать миллион объектов типа текст, но удалить повторяющиеся переменные типа цвет и размер текста, сократив параметры с максимума до необходимых?