2015-02-27 5 views
3

В то время как реальная причина для использования символов Джея (s: ' Abe Bill Chad'), а не массивы строк ('Abe','Bill',:'Chad') или штучные списки строк ('Abe';'Bill';'Chad') является то, что он является лучшим решением (наиболее эффективным/удобным для человека или машины), что такое эмпирическое правило, когда использовать символы?эвристических для использования символов, а не строк в J

vocabulary page для s: упоминает эффективные «поиск, сортировку и сравнение». Вы начинаете использовать символы с самого начала, если есть вероятность, что вы будете искать, сортировать или сравнивать? Или вы используете символы только после того, как узнаете, что ваш код работает с ограничениями других параметров? Или что-то немного более тонкое между ними?

ответ

3

Мой опыт в том, что для большинства случаев использования символ (s:) не является необходимым для обеспечения приемлемой производительности, которая соответствует совету в section on Symbol in J for C Programmers, что вы используете символы, если найдете, что ваша программа занимает много времени, соответствующие строкам. Он также предупреждает, что:

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

По этой причине Vocabulary page for Symbol on JWiki предполагает символы являются наиболее полезными, когда:

  • ограниченное число строк неоднократно появляются
  • множество символов известна и неизменна