问题标签 [eastl]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
9828 浏览

c++ - EASTL vs STL,std::vector怎么会有这么大的性能差异::操作员[]

根据http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2271.html,EASTL vector<uint64>::operator[]比“常用的 STL 商业版本”快 2% 到 70%。

除非商业版的 STL 使用范围检查,否则比较不公平,那么简单的操作怎么可能有这么大的速度差异呢?

更新:

似乎答案是 EA 工程师只是通过与使用范围检查的版本进行比较来作弊......

0 投票
1 回答
2405 浏览

stl - 如何,我在哪里可以下载原始 EASTL 库?

我已经知道 GitHub 的事情了。但它不是原始的 EASTL。

我还听说过 gpl.ea.com。

有开源项目。

我听说那个项目中包含了 EASTL。

所以我试图在他们的项目中找到它但失败了。

如果您对此有所了解,请告诉我一些事情。

谢谢。

0 投票
3 回答
919 浏览

c++ - 在 C++ 中使用 #define 宏从不同的命名空间中选择实现

由于内存、性能和可移植性的原因,我们正在为我们的游戏开发的多平台引擎使用 EASTL 代替 STL。EASTL 可以在这里找到:
http ://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2271.html

因为 Visual Studio 非常适合调试 STL,所以在开发引擎时我们没有在 Windows 上使用 EASTL。此外,一些 STL 容器如 std::queue、std::deque 等在 EASTL 中不可用。因为我们在 Windows 上使用 eastl::string 也没关系,因为它可以很好地调试。

到目前为止,我们正在做的是

并且 GIN_USE_EASTL 在 windows 上被定义为 0。引擎被称为 Ginkgo,这就是 GIN 的来源。
我们正在使用列表,向量,......像这样

效果很好。但是当我们使用字符串或队列时,由于我上面解释的原因,我们必须写

这就是我在这里发帖的原因,因为这不是最佳的!我想做的是对引擎中的所有内容使用 ginstl:: 宏,而不考虑使用什么实现。所以我对这个问题的处理是这样的:

但不幸的是,这不起作用,因为 #define 宏中不允许使用 :: 。有什么方法可以实现同样的事情(能够指定我想为特定数据结构使用哪个实现)以某种方式不同?我可以去

但我更喜欢上面的结构!有没有办法解决这个问题(除了编写自定义预处理器)?

0 投票
2 回答
518 浏览

c++ - EASTL 矢量设计 size() 方法

我有一个关于在EASTL. 链接在这里。

即在方法上size()。这是它的样子:

size_typeis uint32_t, mpBegin/mpEnd是 T* 指针。

我不明白从 (mpEnd - mpBegin) 到 uint32_t 的转换如何等于向量中的元素。不应该除以sizeof(T)吗?否则我们只是得到向量中所有元素的字节大小?

我错过了什么?

编辑:除非 EASTL 向量不遵循向量的 stl 定义,但我在它上面找不到任何数据,据说它可以用 eastl 向量替换 stl 向量

0 投票
1 回答
11405 浏览

c++ - EASTL 性能

今天我下载并创建了一个 Electronic Arts STL 实施的示例项目,EA 的矢量对我来说看起来比标准慢得多。我刚刚创建了 2 个向量并上传了 100 万个项目:

结果是:

  1. EA 0.759000
  2. 标准 0.064000

那么,有什么我做错了还是我错过了什么?该示例已使用 v100 平台工具集进行编译。

0 投票
1 回答
250 浏览

debuggervisualizer - EASTL VS2012 / 2013 的自定义可视化工具

我从这里得到了 EASTL - https://github.com/paulhodge/EASTL

对于调试,我正在编写自定义可视化工具 VS2012/2013。

"eastl::vector" 工作正常,但 "eastl::map" 不行。

这是我的代码

看起来VS无法识别“node_type”

感谢您的回复。

0 投票
1 回答
2737 浏览

c++ - 如何建立Eastl图书馆

最近我正在尝试在 linux 3.10 x86_64 中构建eastl 库但失败了。

https://github.com/electronicarts/EASTL

这里有“编译源”网页:

https://github.com/electronicarts/EASTL/blob/master/CONTRIBUTING.md

按照说明获取 libEASTL.a , ar -t libEASTL.a get :

然后是一个很小的测试源:

编译:

g++ --std=c++11 -O2 test1.cpp -I/home/mars/tools/EASTL-master/include -I/home/mars/tools/EASTL-master/test/packages/EABase/include/Common /home/mars/tools/EASTL-master/thelib/libEASTL.a -o test1.exe

会得到链接错误:

未定义对 `operator new[](unsigned long, char const*, int, unsigned int, char const*, int)' 的引用

Eastl 库应该有一个简单的方法来构建和包含头文件,我只是想念它,任何建议都非常感谢。

编辑 :

添加这个新功能后,链接错误消失了!

所以剩下的唯一问题是:我需要正确编写这个新函数!!!!要做到这一点,任何文件都可以给我一个线索?!

编辑2:

根据本网站信息:

https://wuyingren.github.io/howto/2016/02/11/Using-EASTL-in-your-projects/

然后工作就完成了。

0 投票
1 回答
992 浏览

c++ - 如何使用 EASTL 跟踪内存使用情况?

Electronic Arts EASTLeast::allocator要求用户实现一个特殊的new运算符(如本示例所示)。该new操作符有一个const char* name,它应该用于记录有关执行 EASTL 容器的内存分配的应用程序特定信息。EASTL最佳实践指南还提到应该“命名容器以跟踪内存使用情况” 。

但是,似乎没有任何对应const char* name的 pass by eastl::allocator::deallocate,因此似乎没有内置的方法来记录内存释放

打算如何使用这个 EASTL 调试功能?我想我一定错过了什么。一位 EA 软件工程师在 2015 年也做了一个相关的演讲,他展示了 EA 开发的一些用于内存调试的内部工具,似乎建议他们跟踪分配和释放(例如,确保“游戏级别”的内存1”在“游戏级别 2”开始时被释放)。

0 投票
1 回答
166 浏览

c++ - 是 EASTL 向量> 连续

根据这个答案:

std::vector 的 std::vector 邻接

向量的向量是不连续的。EASTL 声称他们的向量是连续的(参见:https ://github.com/electronicarts/EASTL/blob/master/include/EASTL/vector.h it)。这种连续性是否适用于向量的向量?

0 投票
1 回答
80 浏览

c++ - 标准 - 包括或创建我自己的定义会导致编译时出现 C2953 错误

我正在尝试将 EASTL 用于我正在处理的项目,它无法编译,我能找到的唯一错误来自它的“EASTL/initializer_list.h”,我正在使用此文件的最新版本。出现的 2 个错误是 C2953 和另一个告诉我查看其定义的错误。EASTL 会自动禁用包含此文件时出现的所有警告,甚至有自己的定义以在其文件中使用。唯一的问题是这包含了文件的 Windows 版本,它仍然会导致错误,即使它应该包含就好了?我正在使用 C++14,我的平台工具集是 v142(Visual Studio 2019),我的 Windows SDK 版本是 10.0;我知道据说要更新我已经完成的“EA_HAVE_CPP11_INITIALIZER_LIST 定义”,所以不应该

这是导致错误的代码:

我尝试让它同时使用该类的 std 版本和该类的 EA 版本,这两者都会导致相同的错误(C2953)。感谢任何帮助,因为我希望能够尽快编译它!