2501d,d的优势之一与C互操作

原文

如前,我已将个人理财包从C移植到D语言,开始时,把里面的一些移植到Rust中,直到我再也受不了了.

D和Rust版本中都有读取从美国运通下载的.csv文件的工具之一,并把交易加载到包含财务数据轻查数据库中,试通过使用基于李文距离的算法的模糊比较问题的描述与现有问题,来为每个传入的问题赋值一个费用账户.

李文计算是,使用按扩展加载用户定义轻查函数完成的.

我发现,该工具的D版本(使用DMD编译)取得相同结果,大约是Rust版本的两倍快.

但我觉得如果没猜错的话,它高亮D的强项之一--不需要一个复杂的接口层,而可以直接调用C库.

正如Rust的主要轻查接口包rusqlite的,并没有像轻查自身那样,提供一个直到你满意时停止的单步执行选择查询结果的方法.

相反,可在准备好的语句上运行,或返回访问所有返回的行一个迭代器,或调用闭包来处理每一行'查询'方法(或其变种之一).

每行都涉及贵的计算时,该差异很重要.

就我而言,我想要满足李文距离准则的最新交易,因为我按日期降序排序它们,这是结果集中的第一行.

D中,我可单步匹配查询,或取得一行,或不取.如果这样做,我会停止,使用该交易的费用账户,然后我就完成了.

不会计算整个结果集.在Rust中,rusqlite计算整个结果集,因为李文计算,然后逐行交给我,这很贵.

很难说服轻查最近的行限制结果集.'limit 1'Rust应用的性能没有影响(我试过了).

显然,在计算结果集后,轻查应用了'限制'.可能可用轻查窗口函数来完成,但我不愿意研究.

我也没有找到一个Rustcrate可提供对轻查单步级控制允许你加载扩展.

这说明了D的一个没有足够多的人理解优势--可直接轻松地与C世界对话.人们抱怨D没有一组丰富的库.它不需要;

与从C或C++访问一样容易,可从D访问所有C库.随着ImportC的出现,这更容易,它是D的一个非常重要的补充,值得继续开发以隐藏C头文件中的疯狂.

就我而言,在D中,我可以直接查询,并有与C中相同的简单交互轻查.

D的性能相当(除了AMEX工具,它要好得多),且代码更具可读性.

好文章!是,与C的互操作性九分是D的超能力.

-史蒂夫

相关推荐
fqbqrr1 个月前
2412d,d的6月会议
d
fqbqrr2 个月前
2411d,右值与移动
d
fqbqrr6 个月前
2407d,D2024三月会议
d
fqbqrr9 个月前
2403d,d的com哪里错了
d
fqbqrr1 年前
2402d,d的变参
d
fqbqrr1 年前
2401d,ddip1027如何支持sql
d
fqbqrr1 年前
2401d,讨论d串滑动参数
d
fqbqrr1 年前
2312d,D语言单元测试等
d
fqbqrr1 年前
2312d,d语言作为胶水,用C++调用rust
c++·rust·d