将denormalizr与reselect结合起来是一种好方法吗?

时间:2016-06-14 21:53:41

标签: javascript reactjs redux react-redux reselect

我正在使用reselectdenormalizr来避免在每次更改时进行反规范化,但我真的不知道这是否真的在改进。

btConvexHullShape* tableShape = new btConvexHullShape();

int numMeshes = table.meshes.size();

for (int i = 0; i < numMeshes; i++)
{
    Mesh _tempMesh = table.meshes[i];
    int numVertices = table.meshes[i].vertices.size();

    for (int j = 0; j < numVertices; j++)
    {
        glm::vec3 _tempPos = _tempMesh.vertices[j].Position;
        tableShape->addPoint(btVector3(_tempPos.x, _tempPos.y, _tempPos.z));
    }
}

btDefaultMotionState* fallMotionState =
    new btDefaultMotionState(btTransform(btQuaternion(0, 0, 0, 1), btVector3(table.position.x, table.position.y, table.position.z)));
btScalar mass = 1;
btVector3 fallInertia(0, 0, 0);
tableShape->calculateLocalInertia(mass, fallInertia);
btRigidBody::btRigidBodyConstructionInfo fallRigidBodyCI(mass, fallMotionState, tableShape, fallInertia);
fallRigidBodyCI.m_restitution = 0;
btRigidBody* fallRigidBody = new btRigidBody(fallRigidBodyCI);
dynamicsWorld->addRigidBody(fallRigidBody);

2 个答案:

答案 0 :(得分:0)

规则通常是在您真正需要之前不优化代码。如果您不知道是否需要优化,则可能会出现过早优化的情况。

在这种情况下,如果它减慢你的应用程序,你应该这样做。问题往往是知道这是否真的减慢了你的应用程序。 您可以使用监视工具或只是注释/取消注释代码并触发状态更改,并查看您的应用是否保持响应状态而不重新选择。

答案 1 :(得分:0)

您的实体图会在每次更改时(针对当前对象或某些完全不同的对象)进行修改。重新选择denornalize的输出不会提高性能,因为它会在每次调用时返回一个新对象。当任何实体发生更改时,都会调用重新选择器,因此每次仍然是调用。