2020-06-01:百万级int数据量的一个array求和。
福哥答案2020-06-01:
fork/join。
对于百万级长度的数组求和,单线程和多线程下区别不大。
对于千万级长度的数组求和,多线程明显变快,大概是单线程的2-3倍。
go语言测试代码如下:
package test18_sum100w import (
"fmt"
"math/rand"
"testing"
"time"
) const (
ARRLEN = 100_0000
) var arr []int func init() {
arr = make([]int, ARRLEN)
rand.Seed(time.Now().UnixNano())
for i := 0; i < ARRLEN; i++ {
arr[i] = rand.Intn(10_0000_0000)
}
fmt.Println("初始化完成")
}
func TestAA(t *testing.T) { }
func TestMutiThreadsToSum(t *testing.T) {
fmt.Println("多线程开始")
now := time.Now()
sum := 0
const MAXGE = 10000
const MAXHANG = 100
ch := make(chan int, MAXHANG)
f := func(i int) {
sumtemp := 0
for j := 0; j < MAXGE; j++ {
sumtemp += arr[i*MAXGE+j]
}
ch <- sumtemp }
for i := 0; i < MAXHANG; i++ {
go f(i)
}
for i := 0; i < MAXHANG; i++ {
sum += <-ch
}
fmt.Println(sum)
fmt.Println("多线程结束", time.Now().Sub(now))
} //go test -v -test.run TestSingleThreadToSum
//go test -bench=. -test.run TestSingleThreadToSum
//go test -v -cover -run TestSingleThreadToSum
func TestSingleThreadToSum(t *testing.T) {
fmt.Println("单线程开始")
now := time.Now()
sum := 0
for i := 0; i < ARRLEN; i++ {
sum += arr[i]
}
fmt.Println(sum)
fmt.Println("单线程结束", time.Now().Sub(now))
}
敲命令go test -v:

改下代码,将100万数组改成1000万。测试结果如下:
ARRLEN = 1000_0000
const MAXHANG = 1000

2020-06-01:百万级int数据量的一个array求和。的更多相关文章
- SQL Server百万级大数据量删除
删除一个表中的部分数据,数据量百万级. 一般delete from 表 delete from 表名 where 条件: 此操作可能导致,删除操作执行的时间长:日志文件急速增长: 针对此情况处理 de ...
- 关于处理百万级大批量数据的mysql运行几个重要点
处理大批量百万级的数据几点重要知识点: 一:设置php运行的内存配置 ini_set("memory_limit","1200M"); 在php.ini中有如下 ...
- 用FlexGrid做开发,轻松处理百万级表格数据
表格数据处理是我们项目开发中经常会遇到的设计需求之一,所需处理的数据量也较大,通常是万级.甚至百万级.此时,完全依赖平台自带的表格工具,往往无法加载如此大的数据量,或者加载得很慢影响程序执行. 那么, ...
- 使用MySQL处理百万级以上数据时,不得不知道的几个常识
最近一段时间参与的项目要操作百万级数据量的数据,普通SQL查询效率呈直线下降,而且如果where中的查询条件较多时,其查询速度简直无法容忍.之前数据量小的时候,查询语句的好坏不会对执行时间有什么明显的 ...
- 【转】使用MySQL处理百万级以上数据时,不得不知道的几个常识
---------------------------------------------------------------------------------------------------- ...
- MongoDB设置连接池操作百万级以上数据
开发环境 spring 4.3.7 + springBoot 1.5.2 + dubbo 2.6.5 + mongoDB 4.0.0 连接池配置 mongo-pool.properties sprin ...
- Mysql千万级大数据量查询优化
来源于:https://blog.csdn.net/A350204530/article/details/79040277 1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 ord ...
- .NET 百万级 大数据插入、更新 ,支持多种数据库
功能介绍 (需要版本5.0.44) 大数据操作ORM性能瓶颈在实体转换上面,并且不能使用常规的Sql去实现 当列越多转换越慢,SqlSugar将转换性能做到极致,并且采用数据库最佳API 操作数据库 ...
- EasyPoi大数据导入导出百万级实例
EasyPoi介绍: 利用注解的方式简化了Excel.Word.PDF等格式的导入导出,而且是百万级数据的导入导出.EasyPoi官方网址:EasyPoi教程_V1.0 (mydoc.io).下面我写 ...
随机推荐
- bzoj2056gift? 高精度?*
bzoj2056gift? 高精度? 题意: 给出abcdefghi,求2^a+2^b+2^c+2^d+2^e+2^f+2^g+2^h+i.a~h≤60,i≤2^63 题解: 发现只有极限数据才会爆u ...
- ffmpeg源码编译环境搭建
ffmpeg是视频开发最常用到的开源软件,FFmpeg功能强大,用途广泛,提供几乎所有你能够想到的与视频开发相关的操作,许多商业软件都以ffmpeg为基础进行开发定制. FFmpeg: FFmpeg ...
- lua的table表去重
推荐阅读: 我的CSDN 我的博客园 QQ群:704621321 我的个人博客 方法一 用过lua的人都知道,lua的table中不允许存在相同的key,利用这个思想,我们可以将原始table ...
- 题解 CF296B 【Yaroslav and Two Strings】
题目 传送门 题目大意 如果两个只包含数字且长度为 \(n\) 的字符串 \(s\) 和 \(w\) 存在两个数字 \(1≤i,j≤n\),使得 \(s_i<w_i,s_j>w_j\) , ...
- NPOI Excel设置样式
在表格导出时,会碰到样式修改的问题,作如下简单归纳: //创建行样式ICellStyle style = workbook.CreateCellStyle();//前景色 ...
- PagedList分页,如何添加action参数
使用PagedList分页,如 @Html.PagedListPager((IPagedList)Model, page => Url.Action("Index", new ...
- [jvm] -- 类文件结构篇
类文件结构 结构图 魔数 头四个字节,作用是确定这个文件是否为一个能被虚拟机接收的 Class 文件. Class 文件版本 第五和第六是次版本号,第七和第八是主版本号. 高版本的 Java 虚拟机 ...
- 乌班图16 配置nginx
阿里云 乌班图16 安装ngnix sudo apt install nginx nginx 启动 重启 关闭 sudo service nginx start restart stop status ...
- 源码分析清楚 AbstractQueuedSynchronizer
本文关注以下几点内容: 深入理解 ReentrantLock 公平锁和非公平锁的区别 深入分析 AbstractQueuedSynchronizer 中的 ConditionObject 深入理解 j ...
- Nginx安全优化与性能调优
目录 Nginx基本安全优化 隐藏Nginx软件版本号信息 更改源码隐藏Nginx软件名及版本号 修改Nginx服务的默认用户 修改参数优化Nginx服务性能 优化Nginx服务的worker进程数 ...