MOSS程序优化
来源:互联网 发布:华为云计算培训学校 编辑:程序博客网 时间:2024/06/05 20:42
程序优化
(1)、列表的对象模型可用,但对于查询之类的,尽量用caml查询语句。下面我们来比较一下一个用对象模型查询,一个用CAML查询的差别。
SPWeb web=site.OpenWeb();
SPList list=web.Lists["userlist"];
//程序段一、在一个用户表里面,如果要查找一条姓名叫a数据
foreach (SPListItem item in list.Items)
{
if (item["name"].ToString() == "a")
{
name = item["name"].ToString();
break;
}
}
//程序段二、如果用另一个方式
SPQuery spq=new SPQuery();
string query=" <Where>"
+" <Eq>"
+" <FieldRef Name=\"name\" />"
+" <Value Type=\"Text\">a</Value>"
+" </Eq>"
+" </Where>";
spq.Query=query;
SPListItemCollection lic = list.GetItems(spq);
string name = "";
foreach (SPListItem item in lic)
{
name = item["name"].ToString();
}
注:程序段一取出列表的所有数据项后进行查询,但程序段二取出所需的数据项后进行查询,显然用CAML的方式速度更快些。
(2)、对于splistitemcollection应尽可能转成datatable,减少对象的创建。
//程序段一
foreach (SPListItem item in list.Items)
{
if (item["name"].ToString() == "a")
{
name = item["name"].ToString();
break;
}
}
//程序段二
DataTable dt = list.Items.GetDataTable();
foreach (DataRow dr in dt.Rows)
{
if (dr["name"].ToString() == "a")
{
name = dr["name"].ToString();
break;
}
}
注:程序段一在重复的使用对象模型获取列表数据及数据集,增加了与服务器的交互,而程序段二则是一次取数后,转用datatable进行数据操作,显然用datatable这种方式更快些。
(3)、注意对对象模型的处理,尽量要养成使用using(...){}等编码方式
//程序段一、
SPWeb web=site.OpenWeb();
SPList list=web.Lists["userlist"];
//在一个用户表里面,如果要查找一条姓名叫a数据
foreach (SPListItem item in list.Items)
{
if (item["name"].ToString() == "a")
{
name = item["name"].ToString();
break;
}
}
//程序段二
using (SPWeb web = site1.OpenWeb())
{
list = web.Lists["userlist"];
//如果用另一个方式
foreach (SPListItem item in list.Items)
{
if (item["name"].ToString() == "a")
{
name = item["name"].ToString();
break;
}
}
}
注:程序段一中创建了对象后又没有关闭对象,添加了服务器负担。程序段用了using之后,会将创建的对象自动消毁,显然用using的方式更优一些。
(1)、列表的对象模型可用,但对于查询之类的,尽量用caml查询语句。下面我们来比较一下一个用对象模型查询,一个用CAML查询的差别。
SPWeb web=site.OpenWeb();
SPList list=web.Lists["userlist"];
//程序段一、在一个用户表里面,如果要查找一条姓名叫a数据
foreach (SPListItem item in list.Items)
{
if (item["name"].ToString() == "a")
{
name = item["name"].ToString();
break;
}
}
//程序段二、如果用另一个方式
SPQuery spq=new SPQuery();
string query=" <Where>"
+" <Eq>"
+" <FieldRef Name=\"name\" />"
+" <Value Type=\"Text\">a</Value>"
+" </Eq>"
+" </Where>";
spq.Query=query;
SPListItemCollection lic = list.GetItems(spq);
string name = "";
foreach (SPListItem item in lic)
{
name = item["name"].ToString();
}
注:程序段一取出列表的所有数据项后进行查询,但程序段二取出所需的数据项后进行查询,显然用CAML的方式速度更快些。
(2)、对于splistitemcollection应尽可能转成datatable,减少对象的创建。
//程序段一
foreach (SPListItem item in list.Items)
{
if (item["name"].ToString() == "a")
{
name = item["name"].ToString();
break;
}
}
//程序段二
DataTable dt = list.Items.GetDataTable();
foreach (DataRow dr in dt.Rows)
{
if (dr["name"].ToString() == "a")
{
name = dr["name"].ToString();
break;
}
}
注:程序段一在重复的使用对象模型获取列表数据及数据集,增加了与服务器的交互,而程序段二则是一次取数后,转用datatable进行数据操作,显然用datatable这种方式更快些。
(3)、注意对对象模型的处理,尽量要养成使用using(...){}等编码方式
//程序段一、
SPWeb web=site.OpenWeb();
SPList list=web.Lists["userlist"];
//在一个用户表里面,如果要查找一条姓名叫a数据
foreach (SPListItem item in list.Items)
{
if (item["name"].ToString() == "a")
{
name = item["name"].ToString();
break;
}
}
//程序段二
using (SPWeb web = site1.OpenWeb())
{
list = web.Lists["userlist"];
//如果用另一个方式
foreach (SPListItem item in list.Items)
{
if (item["name"].ToString() == "a")
{
name = item["name"].ToString();
break;
}
}
}
注:程序段一中创建了对象后又没有关闭对象,添加了服务器负担。程序段用了using之后,会将创建的对象自动消毁,显然用using的方式更优一些。
- MOSS程序优化
- MOSS性能优化
- MOSS
- moss
- MOSS站点的优化方案(结合kaneboy的文档)
- 推荐一个MOSS开发实例程序SharePoint Guidance
- 程序优化
- 程序优化
- 程序优化
- 优化程序
- 程序优化
- 程序优化
- 程序优化
- 程序优化
- 程序优化
- 程序优化
- 程序优化
- 程序优化
- Wix打包系列(三)自定义Action(Custom Action)
- 十年经验-给程序员小弟弟小妹妹们的一些总结性忠告(转)
- Wix打包系列(四) 自定义UI
- 闲扯,补码,原码,反码
- Wix打包系列(五) 部署数据库
- MOSS程序优化
- What is the single most influential book every programmer should read?
- Wix打包系列 (六)制作升级和补丁包
- C/C++中include
- 杭电ACM HDU 4520 小Q系列故事——最佳裁判
- 深入理解const char*p,char const*p,char *const p,const char **p,char const**p,char *const*p,char**const p
- 解决Windows 7 下不能双击打开jar文件
- Wix打包系列(七) 添加系统必备组件的安装程序
- linux wireless tools