不知道那的原因,我用C#写的代码程序执行的好慢,其他人用java写的执行就很快,代码如下:
string connstring = @"server=YWZ-THINK\SQLEXPRESS ; user ID =ywz ; password=123;database=DB_Radar";
string sql = "select angle,distance from RA_Data where data =1 and angle >=0 and angle<=0.25";
SqlConnection conn = new SqlConnection(connstring);
SqlCommand cmd = new SqlCommand(sql, conn);
SqlDataAdapter da;
da = new SqlDataAdapter(cmd);
DataTable data = new DataTable();
da.Fill(data); //读取第一象限的目标 填充到datatable的对象data中
da.Dispose(); //释放资源
conn.Close(); //关闭连接 Pen mypen = new Pen(Color.Lime, 1); //定义黄色画笔 用于画目标点
Graphics gc1 = Graphics.FromImage(resultImage); //画图在resultImage上进行 也就是所有改动都在resultImage上进行 resultImage相当于buff int j = data.Rows.Count; //获取并存储目标数据条数 供循环使用
for (int i = 0; i < j; i++) //循环画出目标
{
double direction = Convert.ToDouble(data.Rows[i][0]); //方向
double distance = Convert.ToDouble(data.Rows[i][1]); //距离 float doubleX = 310 + Convert.ToInt16(Math.Sin(direction * 6.283) * distance * 300.0); //极坐标转化为 直角坐标的X
float doubleY = 310 - Convert.ToInt16(Math.Cos(direction * 6.283) * distance * 300.0); //极坐标转化为 直角坐标的Y gc1.DrawRectangle(mypen, (float)doubleX, (float)doubleY, 1, 1); //画长宽都为1px的矩形 表示目标点
}
gc1.Dispose();
string connstring = @"server=YWZ-THINK\SQLEXPRESS ; user ID =ywz ; password=123;database=DB_Radar";
string sql = "select angle,distance from RA_Data where data =1 and angle >=0 and angle<=0.25";
SqlConnection conn = new SqlConnection(connstring);
SqlCommand cmd = new SqlCommand(sql, conn);
SqlDataAdapter da;
da = new SqlDataAdapter(cmd);
DataTable data = new DataTable();
da.Fill(data); //读取第一象限的目标 填充到datatable的对象data中
da.Dispose(); //释放资源
conn.Close(); //关闭连接 Pen mypen = new Pen(Color.Lime, 1); //定义黄色画笔 用于画目标点
Graphics gc1 = Graphics.FromImage(resultImage); //画图在resultImage上进行 也就是所有改动都在resultImage上进行 resultImage相当于buff int j = data.Rows.Count; //获取并存储目标数据条数 供循环使用
for (int i = 0; i < j; i++) //循环画出目标
{
double direction = Convert.ToDouble(data.Rows[i][0]); //方向
double distance = Convert.ToDouble(data.Rows[i][1]); //距离 float doubleX = 310 + Convert.ToInt16(Math.Sin(direction * 6.283) * distance * 300.0); //极坐标转化为 直角坐标的X
float doubleY = 310 - Convert.ToInt16(Math.Cos(direction * 6.283) * distance * 300.0); //极坐标转化为 直角坐标的Y gc1.DrawRectangle(mypen, (float)doubleX, (float)doubleY, 1, 1); //画长宽都为1px的矩形 表示目标点
}
gc1.Dispose();
1.数据库连接前。
2.数据库连接完成后。
3.for循环体执行的时间。
4.gc1.DrawRectangle(mypen, (float)doubleX, (float)doubleY, 1, 1); 这条语句执行前后的时间。
5.for循环的次数,如果次数过大,循环体内有多次拆箱操作也会导致效率低下。