Использование строк для идентификации объектов: какова цель? - PullRequest
0 голосов
/ 25 октября 2010

OGRE3D, например, использует строки для идентификации объектов, поэтому каждый раз, когда код делает что-то с объектом, используя его имя (строку), он должен выполнять строковые операции, и, поскольку 3D-движок очень чувствителен к скорости, как можно это будет хороший способ сделать это?

Когда компьютер должен выполнять операции со строкой, он делает это последовательно, байты за байтами, поэтому он тратит больше циклов ЦП, если строка длиннее ...

Не будет ли быстрее использовать простые имена переменных в коде вместо строковых идентификаторов?

Ответы [ 2 ]

3 голосов
/ 25 октября 2010

Да, было бы быстрее использовать простые имена переменных в коде вместо использования строковых идентификаторов.Но иногда вы не знаете эти имена во время сборки.Тогда вам нужен подход для динамической обработки имен.Альтернативный подход может состоять в том, чтобы просто использовать примитивные целые числа вместо строк.Целочисленные значения могут быть сгенерированы с использованием хеша или таблицы поиска строк.Но использование строк не приведет к резкому замедлению вашей программы, если у вас не будет большого количества строк очень большой длины, которые имеют одинаковые начальные символы и содержат только несколько разных символов в конце.Обычно сравнение строк должно приводить к ложному результату относительно рано, и только для «истинного соответствия» необходимо полностью сравнить две строки.Однако сравнение некоторых строк для поиска объектов в хорошо организованной структуре поиска (например, деревьев и т. Д.) Не является узким местом 3D-движков и, следовательно, не должно быть частью проблем оптимизации

0 голосов
/ 04 декабря 2010

Ну, я получил ответ от учителя:

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

...