浏览模式: 普通 | 列表
1 | 2 | >

马瘦毛长

[ 2007-07-30 20:47:10 | 作者: progame ]
马是因为瘦才毛长还是因为毛长而瘦, 这是一个问题

我的头发终于又长长了些, 最近一次剪发是5月底回家办身份证的时候, 因为成为一个有身份的人, 不得已把才剪不太久的头发又割了一茬. 现在总算吹又生了, 但人却又瘦了下来

头发长了再剪, 剪了又长, 可岁月却在头发下面的脸上留下了痕迹, 职业生涯不久远矣. 写不了几年代码了, 身体在很快地变差, 量变转化成质变只是瞬间, 程序员的年龄可以这样计算, 假设实际年龄为X, 那么生理年龄为30 + (X-20) * 2

饭后百步走, 活到九十九, 老年人到老了只能遛遛自己了, 虽然天气热, 也得走满这一百来步

再续ORM性能测试用例

[ 2007-07-29 12:36:44 | 作者: progame ]
既然是ORM的测试, 就得体现这么几点 :
one-one, many-ony, many-many关系
typed query 类型化查询
entity crud 实体的crud
traverse entity list 实体集合的构造和遍历

从便利性上讲, 需要满足这样几点:
master-details: 保存master, 可以自动保存details, 删除master, 可以自动删除details, 但是还有一种master-details是弱关联, 必须区分开来, 所以测试用例中的delete必须要保证orderitem也删除
实体对象属性的透明获取

这里给出我的性能测试的dbschema和unit test

http://www.cnblogs.com/Files/progame/dbschema.rar
...

阅读全文...
分类: ORM相关 | 评论: 0 | 浏览: 696

dotTrace -- .Net性能分析的利器

[ 2007-07-27 21:25:26 | 作者: progame ]
因为涉及到ORM的性能分析, 于是想找到最大瓶颈在哪里, 找了一下C# Profiler, 但看到了JetBrains出品的dotTrace

现在最新的版本是3.0, 试用版本为10天, 包括cpu时间的性能分析和memory占用的内存分析, 速度虽然在tracing状态下很受影响, 但仍在可以接受的范围, 如果是sampling分析, 则要快的多. 它的分析结果可以以多种分式查看, 并且能对两个分析结果进行比较分析, 可视化做得相当得好

uploads/200707/27_214318_dottrace.jpg


JetBrains dotTrace is the complete profiling solution for .NET. It profiles:

the performance of .NET Framework 1.1 and 2.0 applications
the memory usage of .NET Framework 2.0 applications
ASP.NET applications running on Internet Information Server & ASP.NET Development Server
Windows services
Convenience and ease of use set dotTrace Profiler apart from the many profiling tools built for the Microsoft .NET platform.

The friendly program interface features effective navigation, easy filtering, smart search options and handy source preview. Its speed and efficiency also cannot go unmentioned: dotTrace decisively outperforms the great majority of its in-class competitors.

通过使用后, 发现我的ORM组件TBP.Data的主要损耗在:
对entitylist的内部table设置PrimaryKey
维护entity的dbvalues values dirtyflag

做了部分优化, 速度提升了一倍, 但比NH在构造entity list上仍然有较大差距, 大概是它的3倍时间长

关于ORM性能测试

[ 2007-07-26 10:07:01 | 作者: progame ]
ADO.NET、NBear和NHibernate和IbatisNet简单读写性能比较
再续NBear性能测试:ADO.NET, NBearV3, NHibernateV1, NBearLite, NBearLite+NBearMapping性能比较

我总觉得这个例子里对数据库的操作不能反应实际运用情况

希望大家能写成这样的测试

load all categories, and traverse it's products
for(...)
{
category cat = new category(id)
load(cat)

double sum = 0
foreaach(product p in cat.products)
{
sum += p.amount
}
// find entity in cat's products by id and by index
cat.products[id].productname = cat.products[5].productname

}

写测试
// created
category cat = new category(id)
cat.xxx = xxx
....

for (....) // add some products
{
cat.products.add(new product(id))
}

save(cat)

// update
cat = new catetory(id)
load(cat)

cat.xxx = xxx

foreach(product p in cat.products)
{
p.xxx = xxx
}

save(cat)

// delete cat and it's products
delete(cat)

说明:
以实际情况做参考, category以100条数据为测试, 每个category下有30条product

不知大家用ORM的情况如何, 就我本人来说, 有这样几点是主要的:
根据class 生成数据库, 在项目初期可频繁更新迭代数据库的schema, 要做的只是修改domain class
类型化的entity和property便于在上述迭代中重构, 不至于隐藏的sql string中出现和schema不符的对象
关系的使用, cat.products["001"] cat.products.add(new product("002")) p.category.name role.users user.roles
类型化的查询 product.category.name == "abc" & product.price > 100f

附上现有测试我的结果:
Read Performance Comparison(ms)
Repeat Times:2 ADO.NET:46 NHibernate:668 TBP:205 NBear:1246
Repeat Times:4 ADO.NET:94 NHibernate:215 TBP:132 NBear:1631
Repeat Times:10 ADO.NET:207 NHibernate:462 TBP:318 NBear:4083
Repeat Times:20 ADO.NET:413 NHibernate:852 TBP:641 NBear:8155
Repeat Times:30 ADO.NET:622 NHibernate:1260 TBP:951 NBear:12245
Write Performance Comparison(ms)
Repeat Times:40 ADO.NET:204 NHibernate:292 TBP:272 NBear:556
Repeat Times:80 ADO.NET:417 NHibernate:608 TBP:504 NBear:1016
Repeat Times:200 ADO.NET:1102 NHibernate:1533 TBP:1565 NBear:2731
Repeat Times:400 ADO.NET:2617 NHibernate:3861 TBP:2796 NBear:5516
Repeat Times:600 ADO.NET:4011 NHibernate:5079 TBP:4148 NBear:9527

实际上在读这个测试很不公平, 我的TBP太占便宜了, 为什么这样说呢
EntityList<Products> products = s.GetList<Products>();
EntityList<Categories> categories = s.GetList<Categories>();
EntityList<Customers> customers = s.GetList<Customers>();
我的EntityList是在需要时才构造entity的, 如果要这样来一下:
foreach (Products p in products)
{
p.productName = p.productName;
}
那么TBP的速度马上就和NBear相当了, 在这不得不PF NH的构造实体集合的速度

而在写测试上, 为什么TBP和Ado.net如此接近,? 实际上是Ado.Net的测试写得有问题
SqlHelper.ExecuteNonQuery(conn, CommandType.Text, "update Products set UnitPrice = 16.8 where ProductID = " + productID.ToString() );
对于多次循环执行的这样一句SQL, 没有使用DBCommand.PrepaidCommand和Parameter导致它的性能极大的降低了
分类: ORM相关 | 评论: 0 | 浏览: 915

细嚼慢咽 少食多餐

[ 2007-07-25 22:27:42 | 作者: progame ]
胃动力不足? 是的, 一直以为无知者无胃, 所以像我这样睿智的人自然会为胃病所扰

因为以前周末经常饿到中午2点才进食, 所以导致胃慢慢地出了问题, 胃炎? 胃溃疡? 胃穿孔? 胃出血? 不知道, 没这么严重啦, 由于我本身深厚的医学底蕴, 再加上年少时苦修的龟息大法, 吐纳神功, 对付这些小病还不是小菜一碟, 分分钟搞定! 但无论如何, 问题是出了, 总得解决., 俗话说, 胃病三分靠治七分靠养, 所以细嚼慢咽,少食多餐是很好的一个方针, 值此危急存亡之秋, 唾液就应该勇敢地站出来, 承担大部分的消化工作了, 等咀嚼后的食物欢快地通过食道进入胃部后, 病恹恹的胃睁大睁眼一看, 哇C, 淀粉全部变成葡萄糖了, 直接吸收就行了...

医者有高下之分, 庸医们在自己得病后会六神无言主, 普通的医生会自己开方抓药服之, 当然"服之,卒"的那种是属于自己在清除社会垃圾了, 而真正的神医如我, 又何需用药, 是药三分毒, 生病和治病无非是正邪之气斗争的体现, 培本固元,, 养气调心, 自然药不到, 病已除

不过, 终究是破坏容易建设难, 珍惜生命还得远离电脑才行. 养猪还是放羊? 未来真是未知

带病生存

[ 2007-07-21 22:14:26 | 作者: progame ]
和带发修行一样, 带病生存也需要忍受世俗的眼光

虽然看上去仍然健在, 但我自己知道, 我的真元已经耗尽了快, 用百病缠身来形容我是再合适不过的了, 五脏六腑已经运转得很不正常了. 有一种很好的测试方法, 双手用力握拳, 看是否有种充实感, 如果虚弱很容易就可以体会到, 现在的我已经很虚弱了

这时候已经是双抢的季节了, 这个双抢不是抢夺和抢劫, 而是抢收抢种, 为什么学生时代暑假这么长? 就是让我们这些人在家里干农活的. 以前是一年不少的, 毕业后还双抢了一回, 算起来到现在已经7年没有再去脸朝黄土背朝天了, 很清楚地知道, 现在这么嬴弱的身躯, 已经无法胜任了

能够勉强地生存, 就不敢妄求生活质量了, 想什么时候真的要回家去种一年田, 远离残害生命和身体的网络, 而去担心今天下不下雨, 今年收成会不会好, 看只能收一个台的黑白电视, 听鸡鸣狗叫, 让身体暴晒在三伏天的太阳下, 损失的不过是一年的工作, 但收获的可是能多工作十年的身体

那些被看掉的电子书

[ 2007-07-20 23:08:05 | 作者: progame ]
一开始是从鬼故事开始的, 想着晚上关了灯看鬼故事是种不错的享受, 顺带说一句, 有想自我摧残的可以晚上12点后听FM动感101的鬼故事, 声效应该都还可以吓到人的, 于是下了鬼吹灯. 但事与愿违, 看到关东军要塞, 依然觉得索然, 于是换女生寝室看, 连看了2部, 都是虎头蛇尾的, 后面自圆其说实在牵强, 无非先制造出鬼幕重重, 到结尾的时候说都是人搞的, 为了能够成立, 什么可以催眠人的玉石, 什么怪鱼都出来了, 而且还有一个原则, 就是最不可能的人一定是最后查明真相后的真凶, 连编了2次, 实在不想去找第三部看了

好像之后还是没兴趣看鬼吹灯, 找了<<传奇古术>>来看, 挺不错的, 故事情节挺清晰的, 但写到后来收不住了, 非得整个死无数人才行, 总得来说可以一看. 看完后实在没找到书后, 只好咬着牙看<<鬼吹灯>>, 这一看, 就到进荒漠了, 收不住了, 回来看来, 这些玄幻鬼怪的书, 唯一写得真实可信的就是鬼吹灯了, 尽管我们知道它假得不能再假, 作者现在在写鬼吹灯2, 急于尝鲜, 找了点看, 还是两个字: 精彩!

在鬼吹灯之后, 何以为继的感叹后, 又开始看<<鬼律师>>, 人鬼仙魔佛妖全部出动了, 公子小白边打官司还得边抓鬼, 情节应该挺引人入胜的, 只是美中不足, 美中不足啊, 不应该把小白后来写得这么强, 他就应该是个关系户, 靠和鬼仙妖之间亲密的友情甚至还有爱情, 碰个鼻青脸肿后再搬救兵, 这样就有意思多了...

应该是大家写来写去, 彼此影响都很多, 于是六界的说法都很统一, 另外就是修真, 灵气, 元婴...这些名词在不同的书中到处可见, 在之后的搜神记, 飘渺之旅中经常出现, 不过这两本在玄幻界评价相当高的小说在我看来实在是惨不忍睹, 凭着YY之道, 主角好运不断, 天生奇材, 无数的绝世高手传艺, 漫山遍野的美女投怀, 情节弱智得实在是...

其实继鬼吹灯, 能为后继的只有<<紫川>>一书, 先抄段介绍:
两百年前的蓝河战场,光明帝国最后的军团在魔族的喧嚣声中崩溃,帝国最后的元帅和皇帝战死。混乱的西川大陆上没有了共同的君主,群雄并起而混战,武力是生存下去的唯一本钱,制霸天下,是一代代强者的梦想。
大陆东南,有一个两百多年的强大势力——紫川家族。他西击流风家,东挡魔族,南镇林家。为了强大的梦想,为了家族血统的薪火相传,无数紫川俊杰前仆后继,谱写了一曲的史诗般壮丽的历史。本文《紫川》,讲述的就是这么一个家族的百年悲歌传奇

战争场面写得可歌可泣, 气势恢宏, 多个势力的分布, 情节的设计, 人物的安排, 完美! 不时出现点晴式的幽默语句, 让人对这一道堪比指环王的大菜不会乏味, 如果上面这些书值得拍电影的话, 紫川要比鬼吹灯更值得拍.

然后美好的东西总是有缺憾的, 紫川一书据说从02年开始创作, 直到现在, 仍未完成, 最近的一次更新是在今年5月份, 有些女读者在百度贴吧中感慨, 她从读书时就开始追这本书, 结果现在孩子都要上小学了, 仍然是一个未完的坑...

尽管这部小说长达200多万字, 但我仍然在最近又复习了一遍, 这是所有以上电子书中我唯一看过两遍的, 而搜神记, 飘渺之旅实在是连看一小半的耐性都没有. 除了这些之外, 还有几部值得一说:

春江花月夜, 看似写鬼写妖, 实则写情, 亲情, 爱情, 友情, 很感人的一些小故事串在一起, 比曾经的心灵鸡汤要营养得多

木槿花西月锦绣 非常细腻的一本小说, 也是未完的坑, 在某人的强烈推荐下看的, 写得很不错, 不过对于里面的主要角色的表现都不敢苟同, 另外对到处模仿红楼的对话有点... 感觉很不好, 作者的文学功底还那是相当深厚的

诛仙, 名头那是相当响, 最近看到网上chinajoy已经有网游的参展了, 迷诛仙的也很多, 这部书开头给我的感觉是惊艳, 写得太好了, 可惜的是在张小凡变成鬼厉后这个人就没什么特点了, 强忍着终究没能看下去, 就说前半部吧, 仗着根破棒子厉害就混得风生水起, 感觉主人公毫无可以推崇的个性

捉鬼一家人系列 有<<我的老公不是人>>, <<雌雄怪盗>>, 作者是倒着写的, 好像还是个女作者, 此书值得一看, 现在在写前传, 即讲述爷爷奶奶的故事

女生宿舍1,2 这个不能和女生寝室弄混了, 这个第1部写得很好, 对女人的把握感觉很到位, 也有一定的风趣, 其它没多少可说的, 第二部纯属无聊之作

龙咒 写的是不久的将来, 美韩突然灭了朝鲜, 然后中国打台湾, 美国又打中国, 日本也打中国, 最后中国四分五裂, 可能作者被骂得不少了, 不过我还是非常担心现代化战争中科技落后的一方真的可能是会被打得无还手之力的, 值得一看, 值得反省的一本小说

幻世道, 讲修真的, 还有点意思, 但也属YY太过, 关于主人公龙如风没有一点灵气波动, 深不可测, 主人公龙如风气质超凡脱俗的描述简直充斥全书, 有些时候, YY得起劲了, 基至把龙如风三个字直接打成"我"字, 也不知是作者在陶醉还是手打的那位在陶醉...

再次重装系统...

[ 2007-07-19 20:52:34 | 作者: progame ]
T60在win2003下总有些莫名的问题, 官方根本没有针对win2003的驱动, 都是用的for NT/XP的, 结果无线和蓝牙总是会掉线, 于是决定再次装回XP Pro.

之前以吃螃蟹的勇气装好了2003, 结果隐藏分区没了, 一键恢复没了, 这次想用7CD来个彻底安装, 结果折腾了一晚上加一上午, 无功而返, 竟然找不到一套可用的7CD, 即使刻了看似有问题的几张

后来终于决定还是自己来装吧, 装好后再做个true image, 不过我得把office 2007和vs2005装上再做镜像, 想不到xp with sp2装好后, 居然还有这么多更新.... 可气的是VS2005SP1的更新更是超级慢

一些问题:
a、由于T60使用了HD Audio声卡,看起来能够使音质得到一个提升的东西(好像用那两个小喇叭听确实说得过去)。但是在安装过程中,总会遇到报错:“需要 HD Audio总线驱动程序,但是没有找到”; 这里需要一个Windows的系统补丁KB888111,在安装声卡驱动之前,先打上相应的补丁(2000、XP SP1、XP SP2、2003均不同),然后系统会告诉你发现新硬件,这里还可以附带安装Modem的驱动,它好像也要HD Audio的总线驱动才能安装。

b、安装显卡驱动之前要装好Microsoft .NET Framework 2.0,否则显卡驱动安装不正常。表现在看起来装好了,但是重新启动之后就会报错:“.cli.exe 应用程序错误”。如果在MSConfig中取消它的启动,只能从表面解决问题。关键是要安装Microsoft .NET Framework 2.0后再安装显卡驱动。----这是因为Ati的控制中心要求的要.net估计是IBM的驱动没有像Ati那样集成进去。

关于HD Audio驱动的问题, 其实网上说得很多,就是kb835221的事, 不过这个更新包还得单独下, 还不太好下, 于是我还是友情上传一下吧
kb835221

还有一个未知设备(Unkown Device), 其实就是PM Device了, 据说好像是红外

总算全部装齐了....

计数器复位 排除爬虫

[ 2007-07-15 11:18:35 | 作者: progame ]
想更加真实地反映到访人数, 毕竟要统计的是人数, 不是爬虫数, 所以针对主要的爬虫都排除在外, 虽然后台到访仍然可以查看, 但计数器不会因此而剧变了

之前以为根据是否enable cookie可以判断, 但现在的爬虫基本上都允许cookie了, 所以先写再读的方法不可用了, 只好通过HTTP_USER_AGENT分析来判断了

另外, 现在新注册用户默认允许发表日志了, 毕竟看到有人新注册了, 然后创建了分类, 却找不到发表日志的地方, 也是一种深深的悲哀...
.net 2.0中machine.config中有dataprovider的注册信息, 比如说这样:
<connectionStrings>
<add name="TBPConnectionString" connectionString="Database=tbp;Data Source=localhost;User Id=root;Password=" providerName="MySql.Data.MySqlClient"/>
</connectionStrings>

machine.config中对应的provider configiration:
<system.data>
<DbProviderFactories>
<add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=5.0.7.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
</DbProviderFactories>
</system.data>

因为同样的功能, 在sql server中如果是这样的:
select [a], [c] from [t] where [id] = @id
那么在MySql中是这样的:
select `a`,`c` from `t` where `id` = ?id

那么如果我们只是根据web.config中的providerName来生成connection, 又该如何去生成native sql?

因为这个功能是我在AddIN中使用的, 所以我的sqlbroker只能把两个手拢袖筒里干瞪眼了:( 还好, 只是简单的CRUD, 不过就是有过滤, 否则我直接用commandtype = tabledirect再加上dataset就可以搞定了

先得到DbProviderFactory 吧:
DbProviderFactory ...

阅读全文...
1 | 2 | >