2

次のコードを使用して PHP でユークリッド距離を計算しようとしましたが、非常に時間がかかります。Cで同じ操作を行った方が速くなるかテストしたいです。入力データは php から渡す必要がありますが、他のすべてのデータは mysql データベースに保存されます。それぞれ約 900 の属性を持つ 30,000 以上の画像の距離を計算する必要があるため、操作を高速化するにはどうすればよいですか。では、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
4

1 に答える 1