มีคำตอบที่ยอดเยี่ยมโดยผู้เขียนของเครื่องมือทั้งสองที่คำถามถามเกี่ยวกับ คำตอบของ Matt อธิบายกรณีที่รายงานในคำถามว่าเกิดจากจุดบกพร่องไม่ใช่อัลกอริทึมผสาน ข้อผิดพลาดได้รับการแก้ไขในวันถัดไปมากกว่า 7 ปีที่แล้ว
ในคำตอบของฉันฉันจะให้เวลาที่ทันสมัยของการดำเนินการรวมสำหรับ data.table และ pandas โปรดทราบว่าจะไม่รวม plyr และ base R merge
การกำหนดเวลาที่ฉันนำเสนอนั้นมาจากโครงการdb-benchmarkซึ่งเป็นเกณฑ์มาตรฐานที่ทำซ้ำได้อย่างต่อเนื่อง มันอัพเกรดเครื่องมือเป็นเวอร์ชันล่าสุดและรันสคริปต์มาตรฐานอีกครั้ง มันทำงานโซลูชั่นซอฟต์แวร์อื่น ๆ อีกมากมาย หากคุณมีความสนใจใน Spark, Dask และอื่น ๆ ไม่กี่คนที่จะตรวจสอบการเชื่อมโยง
ณ ตอนนี้ ... (ยังต้องมีการใช้งาน: อีกหนึ่งขนาดข้อมูลและอีก 5 คำถาม)
เราทดสอบขนาดข้อมูล 2 ขนาดของตาราง LHS
สำหรับขนาดข้อมูลแต่ละขนาดเราใช้คำถามผสาน 5 คำถาม
q1: LHS Inner join RHS- เล็ก ในจำนวนเต็ม
q2 : LHS Inner join RHS- สื่อกลางในจำนวนเต็ม
q3: LHS ภายนอกเข้าร่วม RHS-Medium บนจำนวนเต็ม
q4: LHS Inner join RHS- สื่อบนปัจจัย (เด็ดขาด)
q5: LHS Inner join RHS- ใหญ่ ในจำนวนเต็ม
ตาราง RHS มีขนาดต่าง ๆ 3 ขนาด
- ขนาดเล็กแปลเป็นขนาดของ LHS / 1e6
- สื่อแปลเป็นขนาดของ LHS / 1e3
- ขนาดใหญ่แปลเป็นขนาดของ LHS
ในทุกกรณีมีแถวการจับคู่ประมาณ 90% ระหว่าง LHS และ RHS และไม่มีการทำซ้ำในคอลัมน์การเข้าร่วม RHS (ไม่มีผลิตภัณฑ์คาร์ทีเซียน)
ณ ตอนนี้ (ทำงานในวันที่ 2 พฤศจิกายน 2019)
pandas 0.25.3 เผยแพร่เมื่อวันที่ 1 พฤศจิกายน 2019
data.table 0.12.7 (92abb70) ออกเมื่อวันที่ 2 พฤศจิกายน 2019
ด้านล่างเวลาเป็นวินาทีสำหรับขนาดข้อมูลสองขนาดของ LHS คอลัมน์pd2dt
ถูกเพิ่มอัตราส่วนการจัดเก็บข้อมูลของจำนวนแพนด้าที่ช้ากว่า data.table กี่ครั้ง
+-----------+--------------+----------+--------+
| question | data.table | pandas | pd2dt |
+-----------+--------------+----------+--------+
| q1 | 0.51 | 3.60 | 7 |
| q2 | 0.50 | 7.37 | 14 |
| q3 | 0.90 | 4.82 | 5 |
| q4 | 0.47 | 5.86 | 12 |
| q5 | 2.55 | 54.10 | 21 |
+-----------+--------------+----------+--------+
+-----------+--------------+----------+--------+
| question | data.table | pandas | pd2dt |
+-----------+--------------+----------+--------+
| q1 | 6.32 | 89.0 | 14 |
| q2 | 5.72 | 108.0 | 18 |
| q3 | 11.00 | 56.9 | 5 |
| q4 | 5.57 | 90.1 | 16 |
| q5 | 30.70 | 731.0 | 23 |
+-----------+--------------+----------+--------+
data.table
เพิ่งสืบทอดมาdata.frame
แต่อาศัย C-code ใต้ฝากระโปรง