D массивы символов языка программирования

Использование лучшего диска определенно улучшит производительность. Есть и другие показатели, которые вы можете отслеживать.

  • Процент грязных байтов указывает, что данные изменены в кэше wiredTiger, но еще не сохранены на диске. Вам следует следить за IOPS вашего диска, если он достиг вашего установленного лимита. Используйте команду iostat для мониторинга или получения данных из данных FTDC MongoDB.
  • Когда ваш процессор начинает пиковаться, следите, потрачено ли время процессора на iowait . Если iowait% высокий, у вас есть блокировка ввода / вывода, т.е. поможет более быстрый диск или больше операций ввода-вывода в секунду.
  • Контролировать qrw (запросы на чтение и запись в очереди) и arw (активные запросы на чтение и запись) с выхода mongostat. Если эти цифры остаются низкими, как ваш пример вывода, особенно qrw , mongo может поддерживать ваши запросы без очереди запросов.
  • Избегайте конкуренции за ресурсы, перенося инъекционные работы в другие экземпляры.
  • Вы можете дополнительно оптимизировать, используя различные разделы диска для пути данных монго и местоположения журнала.
  • Наблюдатели обычно игнорируют работу клиентов (работников, принимающих пищу). Пик процессора может быть от ваших работников и, следовательно, имеет более низкую пропускную способность. Отслеживайте производительность клиентов с помощью команды top или аналогичной.

Надеюсь, что выше помощь.

7
задан Igor Kustov 3 April 2014 в 18:22
поделиться

4 ответа

Я искал вокруг раздела массивов руководства, это может помочь:

Строка является массивом символов. Строковые литералы являются просто простым способом записать символьные массивы. Строковые литералы неизменны (только для чтения).

char[] str1 = "abc";                // error, "abc" is not mutable
char[] str2 = "abc".dup;            // ok, make mutable copy
invariant(char)[] str3 = "abc";     // ok
invariant(char)[] str4 = str1;      // error, str4 is not mutable
invariant(char)[] str5 = str1.idup; // ok, make invariant copy

Отсюда.

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

В основном то, к чему это сводится, - то, что строковые литералы хранятся в части только для чтения памяти. char[] "изменяемый массив изменяемых символов", которые, если записано в, генерировали бы катастрофический отказ во время выполнения.

Таким образом, компилятор действительно пытается защитить Вас здесь.

invariant(char)[] означает "изменяемый массив инвариантных символов", который является точно, каково это.

PS: Когда Вам не нужен он, чтобы быть a char[], Вы могли бы хотеть использовать auto, как в, auto variable = "value". Освобождает Вас от размышления о его типе :)

9
ответ дан 6 December 2019 в 06:38
поделиться

используйте автоматический и не волнуйте, каков тип:

auto s = "some text";

позвольте компилятору волноваться о типе.

4
ответ дан 6 December 2019 в 06:38
поделиться

Существует две основных версии языка D. Они, как правило, несовместимы друг с другом, хотя код может быть написан для компиляции в обоих.

D1 - это то, что код, который вы предоставили, похоже, написан. Он не имеет концепция неизменяемых массивов, следовательно, это работает.

D2 - это то, как вы пытаетесь его скомпилировать, поэтому 2 начинается с номера версии компилятора. Одной из основных особенностей D2 является концепция константных и неизменяемых / инвариантных ссылок на данные.

char[] text;              // mutable data
const(char)[] ctext;      // data may be mutable or immutable - but either way,
                          // it will not be changed through this reference
invariant(char)[] itext;  // immutable data

Строковые литералы в D2 классифицируются как неизменяемые данные и поэтому не могут быть присвоены char [], а только const (char) [] или инвариант (char) [] (или эквиваленты wchar или dchar).

4
ответ дан 6 December 2019 в 06:38
поделиться
Другие вопросы по тегам:

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