ฉันเขียนโค้ดดั้งเดิมใน Matlab สำหรับ A * B ทั้ง A และ B หร็อมแหร็ม การจัดสรรพื้นที่ล่วงหน้าสำหรับผลลัพธ์เป็นส่วนที่น่าสนใจ เราสังเกตสิ่งที่ Godric ชี้ให้เห็น - การรู้จำนวนที่ไม่ใช่ศูนย์ใน AB นั้นมีค่าใช้จ่ายเท่ากับการคำนวณ AB
เราได้เริ่มต้นใช้งาน Matlab ที่กระจัดกระจายรอบปี 1990 ก่อนหน้ากระดาษ Edith Cohen ที่ให้วิธีการปฏิบัติแรกและรวดเร็วในการประมาณขนาดของ AB อย่างถูกต้อง เรารวมตัวประมาณขนาดที่ด้อยกว่าเข้าด้วยกันและถ้าเราใช้พื้นที่ในการคำนวณกลางให้เพิ่มการจัดสรรและเพิ่มผลลัพธ์ที่คำนวณได้บางส่วนเป็นสองเท่า
ตอนนี้ฉันไม่รู้ว่ามีอะไรใน Matlab
ความเป็นไปได้อีกอย่างก็คือการคำนวณ AB ทีละคอลัมน์ แต่ละคอลัมน์สามารถเก็บไว้ชั่วคราวใน sparse accumulator (ดูกระดาษ Matlab สำหรับคำอธิบายเหล่านี้) และพื้นที่ที่จัดสรรเพื่อเก็บขนาดผลลัพท์ที่แน่นอนของคอลัมน์ผลลัพธ์ ผลลัพธ์จะอยู่ในรูปแบบคอลัมน์กระจัดกระจายที่ถูกบีบอัด - แต่ละคอลัมน์ใน CSC แต่ไม่มีความเกี่ยวข้องกันระหว่างคอลัมน์ - โดยใช้ 2 เวกเตอร์ของ numcols ความยาว (col start, col col), มากกว่าหนึ่งเป็น meta-data มันเป็นรูปแบบการจัดเก็บที่อาจจะคุ้มค่าดู; มันมีความแข็งแกร่งอื่น - คุณสามารถสร้างคอลัมน์ได้โดยไม่ต้องจัดสรรเมทริกซ์ใหม่ทั้งหมด