Структуры данных используются на высокоуровневых языках?

Как мне этого добиться?

Три большие опции:

  • Уменьшение разрешения (ширина и высота)
  • [111 ] Уменьшите качество JPEG (значение 0-100, которое вы используете при сжатии растрового изображения в JPEG)
  • Уменьшите битовую глубину (например, с ARGB888 до RGB565), хотя это в основном что-то для PNG и я подозреваю действительно испортит качество вашей фотографии

Есть ли способ рассчитать, какой должна быть ширина и высота для достижения целевого размера файла?

Нет, как это в значительной степени зависит от содержимого изображения и от того, насколько хорошо оно сжимается с использованием алгоритмов сжатия JPEG.

Или, еще лучше, уменьшить его без указания ширины и высоты?

Для получения размера от 3-4 МБ до 1 МБ почти гарантировано, что вам потребуется уменьшить разрешение.

Однако, поскольку только вы знаете, что считаете приемлемым результатом, вам нужно будет поэкспериментировать самостоятельно, чтобы определить, как наилучшим образом применить эти три варианта.

5
задан vrish88 24 March 2009 в 01:43
поделиться

7 ответов

Таким образом, так как эти высокоуровневые языки управляют памятью для Вас, для чего Вы использовали бы структуры данных?

Главная причина для использования структуры данных не о сборке "мусора". Но именно о том, чтобы хранить данные способом эффективно в некотором роде. Таким образом, что имеет значение, больше всего ТО, КАК Вы организуете данные. Который является точно, что язык не может автоматически выяснить для Вас.

Уверенный высокоуровневый язык будет идти с несколькими предварительно загруженными структурами данных (и Вы должны 100% использовать эти предварительно загруженные структуры данных, когда вместо них предоставляют того, чтобы делать Ваше собственное), но не все структуры данных то, при условии, что Вам, возможно, понадобится.

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

Для большинства задач Вы не должны были бы реализовывать свои собственные структуры данных. Но это зависит полностью от того, что Вы кодируете.

Я могу понять потребность в очередях и стеках, но необходимо было бы когда-либо использовать двоичное дерево в Ruby?

Существует много примеров для использования двоичного дерева, но не вместе каждый день проектов, например, Вы, возможно, должны реализовать кодирование методом Хаффмана.

Другие структуры данных могут использоваться, чтобы иметь пространство сберегательные и быстрые поиски использования trie, или Вы, возможно, должны хранить МНОГО данных с быстрым поиском при помощи B-дерева. Несколько структур данных имеют определенное использование и оптимизированы для разных вещей. Современен ли язык или не и имеет ли он сборку "мусора" или не не изменяет это.

Тенденция, хотя, состоит в том, что пользовательские реализованные структуры данных кодируются меньше, и мысль о меньше. Подобный аргумент происходит с общими алгоритмами. На более современных языках как LINQ Вы просто указываете к виду. Вы на самом деле не говорите, как отсортировать.

8
ответ дан 18 December 2019 в 07:10
поделиться

По моему опыту, с Python (поверхностно подобный Ruby), я никогда не должен был реализовывать двоичное дерево или hashmap или что-либо как этот. Но причина, почему имеет отношение к очень небольшому количеству управляемой памяти. Существуют реализации самых полезных структур, как словари (hashmaps) и списки, в стандартной библиотеке; для скорости и эффективности, они (по крайней мере частично) реализованы на любом языке низшего уровня, в котором записан интерпретатор, и они почти наверняка превзойдут по характеристикам любую пользовательскую реализацию, которую можно придумать.

6
ответ дан 18 December 2019 в 07:10
поделиться

Большую часть времени

Вы используете их, но Вы не должны реализовывать их; они реализованы для Вас.

Например, словарь мог обычно реализовываться внутренне как комбинация hashmaps и двоичных деревьев. Список мог быть реализован как связанный список и т.д.

Но иногда

Вы могли бы хотеть реализовать datastructure, например, при хранении огромных объемов данных (скажите, миллионы строк текста). Я сам еще не столкнулся с ситуацией, где я должен был бы сделать такую вещь, но мысль о проектах, которым, возможно, понадобилась бы она. (например, чтобы эффективно открыться и отредактировать огромный текстовый файл, и т.д.).

2
ответ дан 18 December 2019 в 07:10
поделиться

Одним словом, да.

Хотя GC упростит Вашу работу, существует все еще много ситуаций, где способность организовать данные соответственно позволит Вам записать более эффективное (или производительный) программа.

2
ответ дан 18 December 2019 в 07:10
поделиться

Вы используете эти структуры данных для точно тех же проблем как на других языках. Различие только, что современные языки resp. их стандартные библиотеки часто уже имеют очень эффективные внедрения для них. Тем не менее, все еще необходимо знать, что они используют их. "Более высокий уровень" не означает фактического волшебства.

1
ответ дан 18 December 2019 в 07:10
поделиться

Вы использовали бы двоичное дерево, если Вы хотите смочь эффективно найти что-то в отсортированном наборе, все равно как на каком-либо другом языке. Выбор структуры данных важен на любом языке. Это не становится менее важным на высокоуровневых языках, кроме до градуса, что высокоуровневый язык обеспечивает крупные библиотеки, которые включают вдумчивое рациональное проектирование, которое обрабатывает это для Вас, в этом случае Вы не должны разрабатывать структуру данных сами, но действительно необходимо знать который встроенная структура данных использовать.

Платформа Наборов Java обширна и замечательна, но если Вы используете неправильный (несоответствующий) объект Наборов, то производительность Вашей программы пострадает.

Кроме того, некоторые структуры данных более эффективны пространством, чем другие. Да, память является дешевой, и современные языки GC'd будут управлять памятью для Вас, но если Вы обработаете огромные наборы данных, то затем структуры данных будут иметь значение, можно ли сделать что-то более эффективным памятью.

2
ответ дан 18 December 2019 в 07:10
поделиться

Я программирую профессионально в Ruby, и я нашел, что доскональное знание структур данных было полностью полезно, хотя я никогда не должен был реализовывать дерево ни с какими конкретными рабочими характеристиками за пределами школы (хотя я должен был реализовать древовидные структуры.)

Те же структуры данных, которые кажутся не важными при реализации на массивах в микро масштабе, потому что язык предоставляет их Вам, имеют тенденцию повторяться на "предприятии", когда необходимо масштабироваться через несколько машин или координаты среди разрозненных сервисов. Знание, какие опции доступны Вам, когда запись этих вещей является полезным инструментом, чтобы иметь в Вашем заднем кармане.

1
ответ дан 18 December 2019 в 07:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: