Эвристика для использования символов, а не строк в J

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

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

1 ответ

Решение

Мой опыт показывает, что для большинства случаев использования символа (s:) не обязательно для обеспечения приемлемой производительности, которая соответствует рекомендациям в разделе "Символы в J" для программистов на Си, которые вы используете символы, если обнаружите, что ваша программа требует много времени для сопоставления строк. Он также предупреждает, что:

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

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

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