本篇文章给大家谈谈CoreData和sqlite3的性能对比【图】3gs,iPhone4,4s,5的性能测试,同时本文还将给你拓展.net–使用DapperORM提高SQLite批量插入的性能、c#中
本篇文章给大家谈谈Core Data 和 sqlite3的性能对比【图】3gs,iPhone4,4s,5的性能测试,同时本文还将给你拓展.net – 使用Dapper ORM提高SQLite批量插入的性能、c#中list.FindAll与for循环的性能对比总结、dom4j,json,pattern 性能对比【原】、dotnet core各rpc组件的性能测试等相关知识,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:- Core Data 和 sqlite3的性能对比【图】3gs,iPhone4,4s,5的性能测试
- .net – 使用Dapper ORM提高SQLite批量插入的性能
- c#中list.FindAll与for循环的性能对比总结
- dom4j,json,pattern 性能对比【原】
- dotnet core各rpc组件的性能测试
Core Data 和 sqlite3的性能对比【图】3gs,iPhone4,4s,5的性能测试
demo 和源码再此下载 :http://download.csdn.net/detail/hherima/5603797
使用ios 7和xcode5编译。
.net – 使用Dapper ORM提高SQLite批量插入的性能
>我可以使用什么连接字符串参数来改进
性能?我应该更改缓冲区大小吗?这可能是通过一个
连接字符串参数?是否有任何其他连接字符串
参数提高性能?我当前的连接字符串是:
Data Source=Batch.db;Version=3;Pooling=True;Max Pool
Size=10;Synchronous=off;FailIfMissing=True;Journal Mode=Off;
>我正在使用Dapper ORM. (由StackOverflow的人员构建)是否有更快的方式批量插入到.net中的sqlite?
> System.Data.sqlite用于插入到sqlite中.如何获得改进的sqlite的特殊编译版本
性能? sqlite的一个版本比另一个版本好吗?目前
使用System.Data.sqlite从http://sqlite.phxsoftware.com
>目前,我在一个事务中包装插入以使它们更快(这是一个很好的改进).
>我一次插入一张表中,共17张.我可以在不同的线程并行化这个,使这更快吗?
当前业绩.
这是典型的吗我能做得更好吗
> 55,000行到19列的表:2.25秒插入(24k插入/秒)
> 10,000行到63列的表:2.74秒插入(3.7k /秒)
我喜欢sqlite,但我希望使它更快一些.目前使用XML序列化将对象保存到XML文件中比将其保存到sqlite数据库更快,所以我的老板问:为什么要切换到sqlite?还是应该使用MongoDB或其他对象数据库?
解决方法
本文解释了fastest way to do bulk inserts into SQLite.关键是重用相同的参数对象,但是要为每个记录插入,分配一个不同的值. .NET构建所有这些DbParameter对象的时候真的加起来了.例如,100k行和30列= 300万个必须创建的参数对象.相反,创建和重用只有30个参数对象要快得多.
新表演:
> 55,000行(19列).53秒= 100k插入/秒
internal const string PeakResultsInsert = @"INSERT INTO PeakResult values(@Id,@PeakID,@QuanPeakID,@ISTDRetentionTimeDiff)"; var command = cnn.CreateCommand(); command.CommandText = BatchConstants.PeakResultsInsert; string[] parameterNames = new[] { "@Id","@PeakID","@QuanPeakID","@ISTDRetentionTimeDiff" }; DbParameter[] parameters = parameterNames.Select(pn => { DbParameter parameter = command.CreateParameter(); parameter.ParameterName = pn; command.Parameters.Add(parameter); return parameter; }).ToArray(); foreach (var peakResult in peakResults) { parameters[0].Value = peakResult.Id; parameters[1].Value = peakResult.PeakID; parameters[2].Value = peakResult.QuanPeakID; parameters[3].Value = peakResult.ISTDRetentionTimeDiff; command.ExecuteNonQuery(); }
最后我不能使用Dapper插入我的大桌子. (对于我的小桌子,我仍然使用Dapper).
注意,我发现的其他一些事情:
>我尝试使用多个线程将数据插入同一个数据库,这没有任何改进. (没有什么区别)>从System.Data.sqlite升级1.0.69到1.0.79. (没有影响我的表现,我可以看到)>我没有将类型分配给DbParameter,它似乎没有使性能差异.对于阅读,我无法改善Dapper的表现.
c#中list.FindAll与for循环的性能对比总结
前言
最近在网上看到一篇文章,里面说到:List<T>.FindAll的效率竟然比for循环还差,下面是文章的截图:
以上就是baidu出来的一篇文章,让我惊诧不已,因为在AI模块我已经使用了很多FindAll。但是,上文的结论是真的吗?
我在上文代码基础上增加了多次测试的代码:
得到了如下结果:
.Net2.0, visual studio 执行1,1,10, 100,1000次:
.Net4.1, visual studio 执行1,1,10, 100,1000次:
Unity 先预处理再执行1000次:
Unity 先预处理再执行 10 次
Unity 先预处理再执行 1 次
我的测试程序表明:无论windows平台还是unity平台,List.FindAll的效率并非如前文所说“比for循环差五六十倍”。事实是,因为要初始化算法现场,进程第一次调用List.FindAll的耗时比for循环长五六十倍。但是,第一次之后的调用List.FindAll和for循环的性能差异是非常小的,可以忽略。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对的支持。
- C#中Foreach循环遍历的本质与枚举器详解
- C# 9.0新特性——扩展方法GetEnumerator支持foreach循环
- C#中foreach循环对比for循环的优势和劣势
- 浅谈C#中的for循环与foreach循环
- C# for循环的经典案例集锦
- C# winform循环播放多个视频
- C#使用for循环移除HTML标记
- c# for循环中创建线程执行问题
dom4j,json,pattern 性能对比【原】
报文大概 2000 字节,对比时为只取其中某个节点的值即可. 以下对比可知取少量节点时 pattern 性能是远大于 dom4j, 和 json 的, 但取大量的时候就不能这么以偏概全了.
dom4j 和 pattern 对比
事件:
从 / PACKET/HEAD/USERID 中取值
解析技术
单条 毫秒
多条 (1000 条) 毫秒
规则描写
代码可读性
dom4j
62
1048
易
强
pattern
3
163
难
中
json 和 pattern 对比
事件:
从 PACKET.HEAD.USERID 中取值
解析技术
单条 毫秒
多条 (1000 条) 毫秒
规则描写
代码可读性
json
33
104
易
强
pattern
3
41
难
中
dotnet core各rpc组件的性能测试
一般rpc
通讯组件都具有高性特性,因为大部分rpc
都是基于二进制和连接复用的特点,相对于HTTP
(2.0以下的版本)来说有着很大的性能优势,非常适合服务间通讯交互。本文针对了dotnet core平台上的一些rpc
组件进行性能测试,主要包括grpc
,Orleans
,xrpc
和netx
;其实平台下的rcp
组件有很多,毕竟个人精力有限并没有一一添加到测试里面去;如果大家有兴趣可以参与进来https://github.com/IKende/dotnet-rpc-benchmark添加或优化测试代码并提交相关PR。
测试描述
为了更好的体现实际应用的情况,功能和网络环境都会多样性测试。调用测试是基于远程对象或接口的方式操作,操作方法包括简单和相对复杂的对象;测试的物理网络环境包括10Gb和普通网络1Gb.分别测试16,32,64,128和256等不同的请求并发并获取相关的总请求量和秒并发值。
测试工具
https://github.com/IKende/CodeBenchmarkDoc
测试物理环境
-
Client
E3-1230v2 16g
-
Server
E5-2670v2 32g
-
Network
10Gb和1Gb
-
System
Windows server
测试接口描述
public interface IGreeter
{
Task<HelloReply> SayHello(HelloRequest request);
Task<User> Register(string name, string email, string password, string title, string city);
Task<List<User>> List(int count);
}
Hello
client request
SayHello(new HelloRequest { Name = "you" });
server response
return new HelloReply { Message = "Hello " + request.Name };
Register
client request
Greeter.Register("henryfan", "henryfan@msn.com", "12345678", "cxo", "guangzhou");
server response
return Task.FromResult(new User
{
Name = name,
Email = email,
Password = password,
Title = title,
City = city,
CreateTime = DateTime.Now,
ID= Guid.NewGuid().ToString("N")
});
List
client request
Greeter.List(10);
server response
List<User> items = new List<User>(count);
for(int i=0;i<count;i++)
{
var item = new User {
Name = "henryfan",
City = "guangzhou",
Email = "henryfan@msn.com",
Title = "cxo",
Password = "12345678",
ID = Guid.NewGuid().ToString("N"),
CreateTime = DateTime.Now
};
items.Add(item);
}
测试总结
因为测试结果的图比较多,就在这里先总结了,有兴趣的朋友看完总结后再细看结果(本总结只针对现有测试的组件)。
-
orleans
严格来说
orleans
的功能其实已经超出一rpc
的范围,因为它有集群和Actor
等应用集成;作为rpc
来说它使用简单,基础性能也并不差,如果不考虑多平台交互只是在.net中使用我个人感觉它是首选。缺点没有提供多平台支持,如果需要更高密集的通讯调用在性能上还是相对差了些。 -
grpc
作为
http2.0
和protobuf的结合体有着多平台的通用性,如果你的系统是多环境集成那这个绝对是不二的选择了;不过官方提供的.net实现性能并不出色可以说有点强差人意,官方建议使用.net core 3.0作为基础通讯支持,由于这次测试是基于.net core 2.2 因此测试结果比较差。在使用上也要吐槽一下,proto
描述时不支持基础类型的返回值和参数,所有接口方法参数和返回都必须定义message
. -
xrpc
高吞吐、易用和支持actor是它的特点,可以轻松应对Gb级以上带宽的
rpc
请求处理,缺点并不提供多语言平台支持……如果应用需要在服务间进行高密集的通讯交互可以考虑。
10Gb网络测试结果
16并发
32并发
64并发
128并发
256并发
1Gb网络测试结果
16并发
32并发
64并发
128并发
256并发
原文出处:https://www.cnblogs.com/smark/p/11451326.html
今天的关于Core Data 和 sqlite3的性能对比【图】3gs,iPhone4,4s,5的性能测试的分享已经结束,谢谢您的关注,如果想了解更多关于.net – 使用Dapper ORM提高SQLite批量插入的性能、c#中list.FindAll与for循环的性能对比总结、dom4j,json,pattern 性能对比【原】、dotnet core各rpc组件的性能测试的相关知识,请在本站进行查询。
本文标签: