日期:2014-05-20  浏览次数:20615 次

关于静态变量性能的问题,求助
有下面两个例子
1,
protected   static   StringBuffer   getSQL_MYDATA(){
StringBuffer   sql   =   new   StringBuffer();
sql.append( "INSERT   INTO   MYDATA     ");
sql.append( "SELECT     ");
...//   很长
return   sql;
}

private   void   insertMYDATA()   throws   Exception   {
    StringBuffer   sql   =   getSQL_MYDATA();
    //   数据库操作
}

2,
private   void   insertMYDATA()   throws   Exception   {
    StringBuffer   sql   =   new   StringBuffer();
sql.append( "INSERT   INTO   MYDATA     ");
sql.append( "SELECT     ");
...
//   很长
    //   数据库操作
}

请问,1,2哪个性能更好些,哪种写法更好?

------解决方案--------------------
帮顶一下,我也是新手
我感觉方法2好些,只是个人感觉
期待答案~
------解决方案--------------------
从性能来看,个人觉得应该是第二种好些,少了一次方法调用

如果SQL语句是一样的话,建议做过类成员变量,将SQL语句赋值给该变量,这样如果多次使用该SQL的话性能会好些。
------解决方案--------------------
第3个相比第2个更为通用一点,那个性能好取决于insertMYDATA()被调用的次数。

如果insertMYDATA()只被调用一次则第2个性能好,因为String相加比用StringBuffer构造消耗更多时间。

反之,如果insertMYDATA()只被调用多次则第3个性能好,应为String相加的操作只执行一次,且sql_MYDATA存在于常量池,减少了许多垃圾回收时间。
------解决方案--------------------
感觉String上的优化效果很有限吧,何况不是据说String+String性能不是想象的那么差么?
------解决方案--------------------
只使用一次的情况下,讨论性能纯属浪费时间。