Это сильно зависит от реализации компилятора.
Однако это также зависит от того, что вы используете.
Давайте рассмотрим следующие функции:
bool foo1( const std::string v )
{
return v.empty();
}
bool foo2( const std::string & v )
{
return v.empty();
}
Эти функции реализованы в отдельном блоке компиляции, чтобы избежать встраивания. Затем: 1. Если вы передадите литерал для этих двух функций, вы не увидите большой разницы в характеристиках. В обоих случаях должен быть создан строковый объект 2. Если вы передадите другой объект std :: string, foo2
превзойдет foo1
, потому что foo1
сделает глубокую копию.
Вкл. мой компьютер, используя g ++ 4.6.1, получил следующие результаты:
Вопрос: У нас есть операции Get (id), Put (id, модель), Delete (id), Add (id, модель) в интерфейсе сервиса.
blockquote>O (1) в TypeScript
Map<Key,Value>
: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map
Не совсем уверен насчет # 2, но для # 1 объект Javascript на самом деле является хэш-картой, поэтому поиск выполняется за O (1). Вы можете просто использовать объект, ключи которого представляют первичные ключи, идентифицирующие записи в нашем хранилище данных. Значением каждого ключа является сама запись.