我嘗試使用以下代碼計算PHP中的歐幾里德距離,但花費的時間非常長。我想測試如果我在C中執行相同的操作,如果它會更快。輸入數據應該從php傳遞,而其他所有數據都存儲在mysql數據庫中。如何快速操作,因爲我必須計算每個具有約900個屬性的30,000個圖像的距離。那麼如何讓C中的計算速度比PHP更快?我還沒有編程在C很多,所以任何建議將不勝感激。C中的歐幾里德距離計算
在PHP中用於計算距離的查詢可以概括如下:
SELECT tbl_img.img_id,
tbl_img.img_path,
((pow(($r[9]-coarsewt_1),2))+(pow(($r[11]-coarsewt_2),2))+ ... +(pow(($r[31]-coarsewt_12),2))+
(pow(($r[36]-finewt_$wt1),2))+(pow(($r[38]-finewt_$wt2),2))+(pow(($r[40]-finewt_$wt3),2))+
(pow(($r[43]-shape_1),2))+(pow(($r[44]-shape_2),2))+ ... +(pow(($r[462]-shape_420),2))+
(pow(($r[465]-texture_1),2))+(pow(($r[466]-texture_2),2))+ ... +(pow(($r[883]-texture_419),2))+(pow(($r[884]-texture_420),2)))
as distance
FROM tbl_img
INNER JOIN tbl_coarsewt
ON tbl_img.img_id=tbl_coarsewt.img_id
INNER JOIN tbl_finewt
ON tbl_img.img_id=tbl_finewt.img_id
INNER JOIN tbl_shape
ON tbl_img.img_id=tbl_shape.img_id
INNER JOIN tbl_texture
ON tbl_img.img_id=tbl_texture.img_id
WHERE tbl_img.img_id>=1 AND tbl_img.img_id<=31930
ORDER BY distance ASC LIMIT 6
這個問題是不是與語言,但算法 – 2013-05-02 06:36:57