различие в скорости между символьными и целочисленными массивами?

проверьте приведенный ниже пример кода, при нажатии каждого элемента он удаляет элемент из productData и добавляет соответствующий элемент в свойство saveProducts элемента storeData.

Я надеюсь, что это решит проблему. Пожалуйста, сохраните код в ответ на локальную разработку и попробуйте запустить его.

import React, { Component, Fragment } from 'react';

class App extends Component {

  state = {
    productData: [
      { id: 1, productName: "test 1" },
      { id: 2, productName: "test 2" },
      { id: 3, productName: "test 3" },
      { id: 4, productName: "test 4" }
    ],
    storedData: [{ saveProducts: [] }]
  }

  addItem = (id) => {
    const { productData } = this.state
    this.setState(prevState => ({
      productData: productData.filter(product => product.id !== id),
      storedData: [
        {
          saveProducts: [
            ...prevState.storedData[0].saveProducts,
            ...productData.filter(product => product.id === id)
          ]
        }
      ]
    })
    )
  }

  render() {
    // Destructuring 
    const { productData, storedData } = this.state
    return (
      <Fragment>
        <ul>
          {productData.map(product => {
            return (
              <li
                onClick={() => this.addItem(product.id)}
                key={product.id}>
                <p>{product.productName}</p>
              </li>
            )
          })}
        </ul>
        <h2>
          Saved Products
        </h2>
        {
          storedData[0].saveProducts.length > 0 ?
            storedData[0].saveProducts.map(product => {
              return (
                <p key={product.id}>
                  {product.productName}
                </p>
              )
            })
            :
            "No Products Selected"
        }
      </Fragment>
    );
  }
}

export default App;

5
задан Ashwin Nanjappa 26 September 2008 в 09:00
поделиться

4 ответа

Если Вы планируете использовать SSE, хранить данные в его собственном (8-разрядном) размере является почти наверняка лучшим выбором, так как загрузки операций могут быть сделаны без распаковки, и даже если необходимо распаковать для pmaddwd или других подобных инструкций, еще быстрее, потому что необходимо загрузить меньше данных.

Даже в скалярном коде, загрузка 8-разрядных или 16-разрядных значений не медленнее, чем загрузка 32-разрядного, так как movzx/movsx не отличается в скорости от mov. Таким образом, Вы просто сохраняете память, которая, конечно, не может причинить боль.

5
ответ дан 15 December 2019 в 01:15
поделиться

Это действительно зависит от Вашего целевого ЦП - необходимо читать на его спецификациях и выполнить некоторые сравнительные тесты, как все уже предположили. Много факторов могли влиять на производительность. Первый очевидный, который прибывает по моему мнению, - то, что Ваш массив ints в 2 - 4 раза больше, чем массив символов и, следовательно, если массив будет достаточно большим, то Вы получите меньше удачных обращений в кэш данных, которые определенно замедлят производительность.

1
ответ дан 15 December 2019 в 01:15
поделиться

наоборот, упаковка и распаковка являются дорогими командами ЦП.

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

но если Вы выполняете итерации через свое изображение sequencly, Вы хотите сделать массив символов так, чтобы это было маленьким в размере и уменьшило возможности иметь отсутствие страницы (Специально для больших изображений)

-1
ответ дан 15 December 2019 в 01:15
поделиться

Массивы символов могут быть медленнее в некоторых случаях. Как очень общее эмпирическое правило, собственный размер слова является лучшим для движения для, который больше, чем, вероятно, составит (32-разрядные) 4 байта или (64-разрядных) 8 байтов. Еще лучше должен был выровнять все к 16 байтам, поскольку Вы уже сделали..., это включит более быстрые копии при использовании инструкций SSE (MOVNTA). Если Вы будете только обеспокоены движущимися объектами вокруг этого, то окажет намного большее влияние, чем тип, используемый массивом...

-1
ответ дан 15 December 2019 в 01:15
поделиться
Другие вопросы по тегам:

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