我尝试使用以下代码在 PHP 中计算欧几里得距离。但是花费的时间很长。我想测试我是否在 C 中执行相同的操作是否会更快。输入数据应该从 php 传递,而所有其他数据都存储在 mysql 数据库中。我必须计算 30,000 多张图像的距离,每张图像大约有 900 个属性,我怎样才能使操作更快。那么如何在 C 中比在 PHP 中更快地进行计算呢?我还没有用 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