Что делает условия “зависящий от ЦП” и “ввод-вывод, связанный” средний?

ItemList не является массивом Record, потому что TypeScript - это в основном javascript с типизацией для компилятора. Компилятор просто проверяет. Если вы скажете, что http.get возвращает Record[], то компилятор поверит вам, что возвращенный объект будет иметь эту структуру.

Вы должны сделать это массивом записей. Это довольно просто и должно быть сделано вручную, как вы это делали бы в JavaScript:

obs.pipe(
  map((records) => records.map((record) => Object.assign(new Record(), record)))
).subscribe((records: Record[]) => {
  this.itemList = records;
});

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

275
задан Ciro Santilli 新疆改造中心法轮功六四事件 2 November 2015 в 08:33
поделиться

5 ответов

Это довольно интуитивно понятно:

Программа привязана к ЦП, если бы она работала быстрее, если бы ЦП был быстрее, то есть большую часть своего времени она тратит просто на ЦП (выполняя вычисления). Программа, вычисляющая новые цифры числа π, обычно связана с процессором, она просто перебирает числа.

Программа связана с вводом-выводом, если бы она работала быстрее, если бы подсистема ввода-вывода была быстрее. Какая именно система ввода / вывода имеется в виду, может варьироваться; Я обычно ассоциирую это с диском, но, конечно, сеть или общение в целом тоже распространены. Программа, которая просматривает огромный файл в поисках некоторых данных, может быть связана с вводом-выводом, поскольку узким местом в этом случае является чтение данных с диска (на самом деле, этот пример, возможно, сейчас немного старомоден с сотнями МБ / с. поступает с SSD).

387
ответ дан 23 November 2019 в 02:08
поделиться

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

Ограничение ввода-вывода означает, что скорость, с которой выполняется процесс, ограничена скоростью Подсистема ввода-вывода. Задача, обрабатывающая данные с диска, например подсчет количества строк в файле, скорее всего, будет связана с вводом-выводом.

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

Ограничение кэша означает скорость, с которой процесс ограничивается объемом и скоростью доступного кеша. Задача, которая просто обрабатывает больше данных, чем помещается в кэш, будет связана с кешем.

Ограничение ввода-вывода будет медленнее, чем привязка к памяти, будет медленнее, чем привязка к кешу, будет медленнее, чем привязка к ЦП.

Решение проблемы. Ограничение ввода-вывода не обязательно для увеличения памяти. В некоторых ситуациях алгоритм доступа может быть разработан с учетом ограничений ввода-вывода, памяти или кеша. См. Алгоритмы игнорирования кеширования .

t обязательно получить больше памяти. В некоторых ситуациях алгоритм доступа может быть разработан с учетом ограничений ввода-вывода, памяти или кеша. См. Алгоритмы игнорирования кеширования .

t обязательно получить больше памяти. В некоторых ситуациях алгоритм доступа может быть разработан с учетом ограничений ввода-вывода, памяти или кеша. См. Алгоритмы игнорирования кеширования .

220
ответ дан 23 November 2019 в 02:08
поделиться

Ограничение ЦП означает, что программа находится в узком месте из-за ЦП или центрального процессора, а ограничение В / В означает, что программа является узким местом. посредством ввода-вывода или ввода-вывода, например, чтение или запись на диск, сеть и т. д.

В общем, при оптимизации компьютерных программ стараются найти узкое место и устранить его. Знание того, что ваша программа привязана к ЦП, помогает, чтобы не было необходимости оптимизировать что-то еще.

[Под «узким местом» я имею в виду то, что заставляет вашу программу работать медленнее, чем в противном случае.]

28
ответ дан 23 November 2019 в 02:08
поделиться

Another way to phrase the same idea:

  • If speeding up the CPU doesn't speed up your program, it may be I/O bound.

  • If speeding up the I/O (e.g. using a faster disk) doesn't help, your program may be CPU bound.

(I used "may be" because you need to take other resources into account. Memory is one example.)

17
ответ дан 23 November 2019 в 02:08
поделиться

When your program is waiting for I/O (ie. a disk read/write or network read/write etc), the CPU is free to do other tasks even if your program is stopped. The speed of your program will mostly depend on how fast that IO can happen, and if you want to speed it up you will need to speed up the I/O.

If your program is running lots of program instructions and not waiting for I/O, then it is said to be CPU bound. Speeding up the CPU will make the program run faster.

In either case, the key to speeding up the program might not be to speed up the hardware, but to optimize the program to reduce the amount of IO or CPU it needs, or to have it do I/O while it also does CPU intensive stuff.

9
ответ дан 23 November 2019 в 02:08
поделиться
Другие вопросы по тегам:

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