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的超能力.
-史蒂夫

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/65015.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/65015.shtml
英文地址,請注明出處:http://en.pswp.cn/web/65015.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

vue3+Echarts+ts實現甘特圖

項目場景&#xff1a; vue3Echartsts實現甘特圖;發布任務 代碼實現 封裝ganttEcharts.vue <template><!-- Echarts 甘特圖 --><div ref"progressChart" class"w100 h100"></div> </template> <script lang"ts&qu…

EdgeX規則引擎eKuiper

EdgeX 規則引擎eKuiper 一、架構設計 LF Edge eKuiper 是物聯網數據分析和流式計算引擎。它是一個通用的邊緣計算服務或中間件,為資源有限的邊緣網關或設備而設計。 eKuiper 采用 Go 語言編寫,其架構如下圖所示: eKuiper 是 Golang 實現的輕量級物聯網邊緣分析、流式處理開源…

【AIGC-ChatGPT進階提示詞指令】AI美食助手的設計與實現:Lisp風格系統提示詞分析

引言 在人工智能助手的應用領域中&#xff0c;美食烹飪是一個既專業又貼近生活的方向。本文將詳細分析一個基于Lisp風格編寫的美食助手系統提示詞&#xff0c;探討其結構設計、功能實現以及實際應用效果。 提出你的菜系&#xff0c;為你分析&#xff0c;并生成圖片卡片 提示詞…

智能工廠的設計軟件 應用場景的一個例子:為AI聊天工具添加一個知識系統 之9 重新開始 之2

本文要點 對程序設計而言&#xff1a;前者基于一個自上而下的 分類體系--&#xff08;生物遺傳基因&#xff09;&#xff0c;后者者需要一個收集差異的自下而上的差異繼承路徑--&#xff08;系統繼承源流&#xff09; 就是 廣義和狹義 分類學。 共性對齊 和 差異收集 正是兩者…

MCA:用于圖像識別的深度卷積神經網絡中的多維協同注意力

摘要 大量先前的研究已經表明,注意力機制在提高深度卷積神經網絡(CNNs)性能方面具有巨大潛力。然而,現有的大多數方法要么忽略了在通道和空間維度上同時建模注意力,要么引入了更高的模型復雜度和更重的計算負擔。為了緩解這一困境,本文提出了一種輕量級且高效的多維協同…

halcon中圖像處理及圖像濾波

圖像濾波簡介 圖像濾波的方法主要分為兩大類:空間域方法和頻域方法。 空間域方法是以對圖像的像素直接進行處理為基礎,包括均值濾波、中值濾波、高斯濾波等;頻域方法則是以修改圖像在傅里葉變換空間的值為基礎的,包括高通濾波、低通濾波、同態濾波等。 1.空間域圖像濾波 圖…

【從零開始入門unity游戲開發之——C#篇42】C#補充知識——隨機數(Random)、多種方法實現string字符串拼接、語句的簡寫

文章目錄 一、隨機數1、Random.Next()生成隨機整數示例&#xff1a;生成一個隨機整數生成指定范圍內的隨機整數 2、Random.NextSingle生成隨機浮點數示例&#xff1a;生成隨機浮點數 3、 生成隨機字母或字符示例&#xff1a;生成隨機字母示例&#xff1a;生成隨機小寫字母 二、…

吐卡機開發——指令合集—未來之窗行業應用跨平臺架構

序號指令10A 09 02 01 01 0D DE20A 09 02 02 01 FD DE30A 09 02 03 01 6D DF40A 09 02 04 01 5D DD50A 09 02 05 01 CD DC60A 09 02 06 01 3D DC70A 09 02 07 01 AD DD80A 09 02 08 01 5D D890A 09 02 09 01 CD D9100A 09 02 10 01 5D D2110A 09 02 11 01 CD D3120A 09 02 12 0…

fpga系列 HDL:verilog 常見錯誤與注意事項 位寬不匹配+case 語句中沒有覆蓋所有情況

位寬不匹配問題 信號或操作數的位寬不匹配&#xff0c;可能導致仿真或綜合錯誤。 module top (input wire [3:0] a,output wire [7:0] b );assign b a; endmodulecase 語句中沒有覆蓋所有情況 module top (input wire [1:0] sel,input wire [7:0] a,input wire [7:0] b,in…

Linux中操作中的無痕命令history技巧

當我們需要查看Linux下的操作記錄時&#xff0c;就可以用history命令來查看歷史記錄 1、關閉history記錄功能&#xff0c;如果不想讓別人看到自己在Linux上的操作命令&#xff0c;可以用這個命令 set o history 2、打開history記錄功能 set -o history3、清空記錄 histor…

計算機網絡練習題

學習這么多啦&#xff0c;那就簡單寫幾個選擇題鞏固一下吧&#xff01; 1. 在IPv4分組各字段中&#xff0c;以下最適合攜帶隱藏信息的是&#xff08;D&#xff09; A、源IP地址 B、版本 C、TTL D、標識 2. OSI 參考模型中&#xff0c;數據鏈路層的主要功能是&#xff08;…

優化租賃小程序提升服務效率與用戶體驗的策略與實踐

內容概要 在這個快速發展的商業環境中&#xff0c;租賃小程序成為了提升服務效率和用戶體驗的重要工具。通過對用戶需求的深入挖掘&#xff0c;我們發現他們對于功能的便捷性、響應速度和界面的友好性有著極高的期待。因此&#xff0c;針對這些需求&#xff0c;完善租賃小程序…

【數據結構】樹鏈刨分

1 u v k&#xff0c;修改路徑上節點權值&#xff0c;將節點 uu 和節點 vv 之間路徑上的所有節點&#xff08;包括這兩個節點&#xff09;的權值增加 kk。2 u k&#xff0c;修改子樹上節點權值&#xff0c;將以節點 uu 為根的子樹上的所有節點的權值增加 kk。3 u v&#xff0c;詢…

pandas.Grouper() 在實際項目中非常有用,尤其是在處理時間序列數據、財務數據或多級索引數據時

pandas.Grouper() 在實際項目中非常有用&#xff0c;尤其是在處理時間序列數據、財務數據或多級索引數據時。以下是幾個實際場景的例子&#xff0c;展示了如何使用 pandas.Grouper() 進行數據分組&#xff0c;并用數值示例說明。 1. 按月分組進行銷售數據匯總 場景&#xff1…

private static final Logger log = LoggerFactory.getLogger()和@Slf4j的區別

一、代碼方面 - private static final Logger log LoggerFactory.getLogger()方式 詳細解釋 這是一種傳統的獲取日志記錄器&#xff08;Logger&#xff09;的方式。LoggerFactory是日志框架&#xff08;如 Log4j、Logback 等&#xff09;提供的工廠類&#xff0c;用于創建Lo…

醫療數倉Hive安裝部署

Hive安裝部署 Hive安裝部署 1&#xff09;把hive-3.1.3.tar.gz上傳到linux的/opt/software目錄下 2&#xff09;解壓hive-3.1.3.tar.gz到/opt/module/目錄下面 [atguiguhadoop102 software]$ tar -zxvf /opt/software/hive-3.1.3.tar.gz -C /opt/module/3&#xff09;修改hive…

通俗易懂的講一下Vue的雙向綁定和React的單向綁定

1.Vue 的雙向綁定&#xff1a; <template><!-- 輸入框和數據自動綁定&#xff0c;就像連體嬰兒&#xff0c;一個動另一個也動 --><input v-model"message"><p>{{ message }}</p><!-- 完整表單示例 --><form><!-- 所有…

使用setup.py打包 HuggingFace PEFT 項目詳解:pip install peft的幕后流程

使用 setup.py 打包 HuggingFace PEFT 項目詳解 Source: https://github.com/huggingface/peft/blob/main/setup.py 1. 項目簡介 HuggingFace 的 PEFT&#xff08;Parameter-Efficient Fine-Tuning&#xff09;庫是一個用于高效參數微調的 Python 工具包&#xff0c;支持多種…

BP神經網絡的反向傳播算法

BP神經網絡&#xff08;Backpropagation Neural Network&#xff09;是一種常用的多層前饋神經網絡&#xff0c;通過反向傳播算法進行訓練。反向傳播算法的核心思想是通過計算損失函數對每個權重的偏導數&#xff0c;從而調整權重&#xff0c;使得網絡的預測輸出與真實輸出之間…

線程池的創建規范

第1章&#xff1a;引言——為什么使用線程池&#xff1f; 1.1 線程池的概念 線程池是一個容器&#xff0c;用來管理多個工作線程&#xff0c;它通過對線程的管理、復用來提高系統性能。線程池的核心理念是將線程的創建、銷毀、復用等操作交給線程池來管理&#xff0c;避免了頻…