不知道那的原因,我用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(); 

解决方案 »

  1.   

    数据库里存的是float型的,下面要用double的,所以转化一下。
      

  2.   

    通过日志输出,记录下几个关键位置的执行时间。
    1.数据库连接前。
    2.数据库连接完成后。
    3.for循环体执行的时间。
    4.gc1.DrawRectangle(mypen, (float)doubleX, (float)doubleY, 1, 1);  这条语句执行前后的时间。
    5.for循环的次数,如果次数过大,循环体内有多次拆箱操作也会导致效率低下。