- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
您好,我正在尝试使用 Yeppp 提高我代码中 vector 代数的性能!库但是性能实际上越来越差......下面是一段 Vector 类代码:
#include "Vector3.h"
#include <cmath>
#include "yepCore.h"
Vector3::Vector3()
{
//ctor
}
Vector3::~Vector3()
{
//dtor
}
Vector3::Vector3(float X, float Y, float Z)
{
x = X;
y = Y;
z = Z;
}
float& Vector3::operator[](int idx)
{
return (&x)[idx];
}
Vector3& Vector3::normalize()
{
#if USE_YEPPP
float inf;
yepCore_SumSquares_V32f_S32f(&x, &inf, 3);
yepCore_Multiply_IV32fS32f_IV32f(&x, 1.0f / sqrt(inf), 3);
#else
float inf = 1.0f / sqrt((x * x) + (y * y) + (z * z));
x *= inf;
y *= inf;
z *= inf;
#endif
return *this;
}
Vector3 Vector3::cross(Vector3& rh)
{
return Vector3 (
(y * rh.z) - (z * rh.y),
(z * rh.x) - (x * rh.z),
(x * rh.y) - (y * rh.x)
);
}
float Vector3::dot(Vector3& rh)
{
#if USE_YEPPP
float ret = 0;
yepCore_DotProduct_V32fV32f_S32f(&x, &rh.x, &ret, 3);
return ret;
#else
return x*rh.x+y*rh.y+z*rh.z;
#endif
}
Vector3 Vector3::operator*(float scalar)
{
#if USE_YEPPP
Vector3 ret;
yepCore_Multiply_V32fS32f_V32f(&x, scalar, &ret.x , 3);
return ret;
#else
return Vector3(x*scalar, y*scalar,z*scalar);
#endif
}
Vector3 Vector3::operator+(Vector3 rh)
{
#if USE_YEPPP
Vector3 ret;
yepCore_Add_V32fV32f_V32f(&x, &rh.x, &ret.x, 3);
return ret;
#else
return Vector3(x+rh.x, y+rh.y, z+rh.z);
#endif
}
Vector3 Vector3::operator-(Vector3 rh)
{
#if USE_YEPPP
Vector3 ret;
yepCore_Subtract_V32fV32f_V32f(&x, &rh.x, &ret.x, 3);
return ret;
#else
return Vector3(x-rh.x, y-rh.y, z-rh.z);
#endif
}
Vector3 operator*(float s, const Vector3& v)
{
#if USE_YEPPP
Vector3 ret;
yepCore_Multiply_V32fS32f_V32f(&v.x, s, &ret.x , 3);
return ret;
#else
return Vector3(s*v.x,s*v.y,s*v.z);
#endif
}
我正在使用 g++ 编译器。编译器选项:g++ -Wall -fexceptions -fPIC -Wl,--no-as-needed -std=c++11 -pthread -ggdb链接器选项:g++ -shared -lpthread -lyeppp -ldl
那么知道我做错了什么吗?
最佳答案
是啊!针对处理 100 多个元素的数组进行了优化。
由于使用 SIMD 的能力有限以及函数调用、动态调度和参数检查的开销,它在小型数组(如您示例中的长度为 3 的数组)上效率不高。
关于c++ - 与 Yeppp 一起表演!比 native 实现慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26504111/
我对如何从 dask 中获得最佳效果感到困惑。 问题 我有一个包含多个时间序列的数据帧(每个都有自己的 key ),我需要运行一个函数 my_fun在他们每个人上。用 Pandas 解决它的一种方法包
在我的 symfony 应用程序中,我使用选民来检查用户是否可以访问某些功能。 现在,我有一个导航栏,其中的菜单根据这些权限显示或隐藏。 这个导航栏单独渲染大约需要 2 秒。每个页面都添加了很多内容。
我正在尝试实现 2D 版本的行进立方体算法(行进方 block ?),我遇到的主要障碍之一是性能问题(使用 WebGL 和 Three.js)。我注意到质量(体素/方形大小)和性能之间存在巨大的权衡,
我目前正在接近 Elm,我需要创建一个包含一些可折叠数据的页面。 由于我目前正在使用 Bootstrap,因此 Accordion 组件似乎是最好的组件。 这是我的相关虚拟代码: view : Mod
我是一名优秀的程序员,十分优秀!