Q
提高数据表性能
2
A
回答
3
我会假设你有一个很好的理由迭代列表500,000次。
根据您每次迭代所做的工作,您可能可以从某些工作负载的平行化中受益。看看TPL,你可以使用Parallel.ForEach将工作分解成可以同时运行的任务。通过这种方式,您可以利用功能更强大,硬件更多的CPU核心。
当然,如果你可以在更少的迭代中完成更多的工作,你也可以获得一些性能,但是实际上并不知道你在做什么,唯一可以提供的建议是高层次的想法,没有任何实际问题域的基础。
2
另一个解决办法是把它变成对象的名单,极有可能只是有它在这个不同的结构,你将能够迭代更快
如果你不是在每次迭代写入数据,你肯定会受益于多线程(并行化)
1
我同意你应该有一个非常好的理由在代码端处理250k行500k次。张贴一些伪代码和你想要完成的基本想法。
我现在假设你确实需要超过250k条记录500k次。也许这是一个分形系列。如果你对算法做两件相对简单的事情,我认为你会大大提高性能。
阅读DataTable中的每个DataRow的伸到你创建一个POCO对象,使它们的名单。 DataRows和DataTable的使用极为昂贵,因为它们被设计用来处理任何行或表,因此如果知道数据结构,它们会有很多开销,而这些开销并不需要。一次性把他们拉出来,然后在完成后再把它们放回去,将会收回499,999倍。
并行化过程。寻找方法将2到5个工作进程之间的每次迭代进行拆分;比你的CPU内核多一个。你不会把时间分得太多,但你会看到显着的改善。不要将迭代的每一步都放在自己的过程中;你会堵塞CPU的开销来管理它们。
相关问题
- 1. IONIC提高列表性能
- 2. MySQL提高性能大表
- 3. 提高SQL Server数据库性能
- 4. 如何提高数据库的性能?
- 5. Python - 如何提高数据帧性能?
- 6. 如何提高大数据性能?
- 7. 提高表值函数性能
- 8. 提高性能
- 9. 提高性能
- 10. 提高性能
- 11. 提高性能
- 12. 如何提高将数据写入注册表的性能?
- 13. LINQ与大型数据库表提高性能SQL
- 14. 提高性能searchs
- 15. 提高ejabberd性能
- 16. 提高性能SQL
- 17. 提高性能SP
- 18. 提高DAL性能
- 19. ASP.NET - 提高性能
- 20. 提高性能SQL
- 21. 提高属性树性能
- 22. 提高了将数据写入MYSQL数据库的性能
- 23. 如何从数据库移动此数据以提高性能
- 24. 提高数据库提取操作的性能
- 25. 提高数据库可用性和性能的工作
- 26. 多表连接以提高性能?
- 27. 拆分表以提高性能
- 28. 在大型表上提高iScroll性能
- 29. 提高表变量删除的性能
- 30. 提高分块列表的性能
如何不迭代它500,000次?但是发布一些代码/ pseuodocode你正在尝试做什么。否则很难提供具体的建议。盲目的建议#1:让数据库完成大部分工作。 – 2010-09-03 20:30:33
为什么你需要同时在内存中存储所有的数据?为什么你在世界上迭代了很多次?您需要重新思考自己在做什么,并找到一种方法在数据库中使用面向集合的逻辑来代替迭代。 – 2010-09-03 21:30:45