Skip to content

ELC-lang/nerd-s-obsession

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 

Repository files navigation

an title

来让我们看看这里有些什么!
这里存放的是elc的库所达到的成就,包括和stl一起跑benchmark或者对rand进行testu01的测试
在这里你可以轻松的找到“某个elc的东西在某个测试中的表现如何”以及相关的代码链接

我想以后这里的东西会越来越多

rand

elc的rand定义在elc/base_defs,点击这里查看具体的实现
std::randstd::mt19937相比,elc的rand有更多的优点:

  • 速度更快
  • 更好的随机性(通过了std中的randmt19937未能通过的testu01测试
  • 更好的可移植性(在不同的平台上都能保证同一种子下随机出一致的结果,而std::rand不行)
  • 泛型支持(可以用于任何平凡构造的类型)
  • std::rand更长的周期以及比std::mt19937更小的状态,一切都刚刚好够用

在在线编译中使用elc::rand的示例

string

elc的string定义在elc/string,点击这里查看具体的实现
std::string相比,elc的string有更多的优点:

  • copy-on-write
  • 更小的空间占用
  • 更快的头插速度
  • 更多的接口(包括但不限于查看当前内存占用、预先分配一段内存、pop_fount等等)
  • 更好的编译期常量支持
  • 近乎常数时间的substrhashoperator==、定长构造等
  • 其他elc函数的支持(比如不同于std::to_string的可以进行无损来回转换的elc::to_string等)

std::string一同benchmark的结果点此查看
在在线编译中使用elc::string的示例

需要注意的是,在上面的在线编译示例中目前有两个小问题,一个是编译器的ice(会导致程序崩溃),而另一个是STL的实现问题(导致编译中警告)
编译器ice绝赞调查中,详见此处
STL的实现问题已经在microsoft/STL#3246被修复,等待下一版本的更新即可

io

elc的io定义在elc/stream,由于实现较为分散,所以这里只给出base_stream的实现链接,点此查看
std中的io相比,elc的io有更多的优点:

  • 指针输出包含更详细的信息(包括指针指向的类型名称和指针的值)
  • 作为utf32的elc::char_t原生支持
  • 得益于elc::to_string,无损并且高精度的算数类型转换
  • 更为完善的输出逻辑(比如对于非true也非falsebool值,相比std的大部分实现而言,elc的输出会是other(值内容),而不是true

在在线编译中使用elc::out的示例

About

优质解答:我不知道

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published