基于托管指针字节码的线程间数据传输

钉钉Java面经及参考答案 TCP 三次握手建立连接的核心目标是双向确认双方发送、接收能力,同步通信序列号,协商初始窗口大小,防止历史过期连接报文干扰新连接。第一次握手,客户端主动向服务端发送 SYN 报文,携带客户端随机生成的初始序列号 ISN,客户端状态变更为 SYN_SENT,目的是告知服务端客户端具备发送数据的能力。第二次握手,服务端收到 SYN 报文后,回复 SYN+ACK 报文,其中 ACK 确认号为客户端 ISN+1,同时携带服务端自身随机初始序列号,服务端进入 SYN_RCVD 状态,代表服务端确认收到客户端报文,且自 阅读详情
本代码演示了如何用托管指针的字节码进行线程间数据传输的。不知何故,直接用AAuto原生的数值数组传输比用托管指针字节码慢了很多,请大家斧正,在此不胜感激!话不多说,各位看了如下代码自会明白。
先把如下代码(文件名nb.aau)编译成用户库,便于在main.aau中调用:

namespace nb
import raw
class DOUBLE{
    double v=0
}
class INT32{
    int v=0
}
//数值数组转化为托管指针字节码,数值默认类型为double
num2byte=function(numarr,numtype='double'){
    
var len
    
var ele
    
if numtype=='double'{
        ele=DOUBLE()
        len=8
    }
    
else{
        ele=INT32()
        len=4
    }
    
var bytearr=raw.malloc(len*#numarr)
    
for i=1;#bytearr;len{
        ele.v=numarr[(i+len-1)/len]
        
var tmp=raw.malloc(ele)
        
for j=0;len-1
            bytearr[i+j]=tmp[j+1]
    }
    
return bytearr  
}
//托管指针字节码转化为数值数组,数值默认类型为double
byte2num=function(bytearr,numtype='double'){
    
var len
    
var ele
    
if numtype=='double'{
        ele=DOUBLE()
        len=8
    }
    
else{
        ele=INT32()
        len=4
    }
    
var numarr={}
    
for j=1;#bytearr/len
        numarr[j]=raw.convert(bytearr,ele,len*(j-1)).v
    
return numarr
}


主调程序main.aau:

import time.performance
import nb
//托管指针字节码与数值数组的相互转化
io.open()
io.print(
"==========================================")
io.print(
"* 托管指针字节码与数值数组的相互转化示例 *")
io.print(
"==========================================")
io.print(
"示例 1: 小规模,验证一下结果")
var numarr={1;2;255;256;257}
io.print(
"原始数值数组:")
for j=1;#numarr
    io.stdout.write(numarr[j],
' ')
io.print()
var bytearr=nb.num2byte(numarr,'int')
io.print(
"数值数组 --> 字节码:")
for j=1;#bytearr
    io.stdout.write(bytearr[j],
' ')
io.print()
io.print(
"字节码 --> 数值数组:")
var numarr2=nb.byte2num(bytearr,'int')
for j=1;#numarr2
    io.stdout.write(numarr2[j],
' ')
io.print(
'\n')
io.print(
"示例 2: 大规模,测一下运行效率")
numarr={}
for j=1;200000
    numarr[j]=j
io.print(
"数组数组长度",#numarr)
var tk=time.performance.tick()
bytearr=nb.num2byte(numarr,
'int')
io.print(
"数值数组 --> 字节码:",time.performance.tick()-tk,'毫秒')
tk=time.performance.tick()
numarr2=nb.byte2num(bytearr,
'int')
io.print(
"字节码 --> 数值数组:",time.performance.tick()-tk,'毫秒')
io.print(
'\n')
io.print(
"========================")
io.print(
"*  线程间数值数据传输  *")
io.print(
"========================")
fnum=
function(numarr){
    
var s=0
    
for j=1;#numarr
        s+=numarr[j]
    io.print(
"  数组元素之和:",s)
}
fbyte=
function(bytearr){
    
import nb
    
var numarr=nb.byte2num(bytearr,'int')
    
var s=0
    
for j=1;#numarr
        s+=numarr[j]
    io.print(
"  数组元素之和:",s)
}
numarr={}
for j=1;10000
    numarr[j]=j
io.print(
"数组数组长度",#numarr)
io.print(
'利用数值数组:')
tk=time.performance.tick()
handle=thread.create(fnum,numarr)
thread.wait(handle)
io.print(
"耗时:",time.performance.tick()-tk,'毫秒')
io.print(
'利用字节码:')
tk=time.performance.tick()
bytearr=nb.num2byte(numarr,
'int')
handle=thread.create(fbyte,bytearr)
thread.wait(handle)
io.print(
"耗时:",time.performance.tick()-tk,'毫秒')
execute("pause")
io.close()

某次运行结果:

==========================================
* 托管指针字节码与数值数组的相互转化示例 *
==========================================
示例 1: 小规模,验证一下结果原始数值数组:
1 2 255 256 257
数值数组 --> 字节码:
1 0 0 0 2 0 0 0 -1 0 0 0 0 1 0 0 1 1 0 0
字节码 --> 数值数组:
1 2 255 256 257
示例 2: 大规模,测一下运行效率

数组数组长度    200000
数值数组 --> 字节码:   1531.6426094919 毫秒
字节码 --> 数值数组:   100.48708815128 毫秒

========================

*  线程间数值数据传输  *
========================
数组数组长度    10000
利用数值数组:  
数组元素之和:        50005000
耗时:      352.52849365026 毫秒
利用字节码: 
数组元素之和:        50005000
耗时:      19.031126827002 毫秒
注:系统配置 WinXP SP3,intel core2 CPU Quad Q8300 2.50GHz,内存金士顿两条共4GB。
【信息科学与工程学】【数据中心】 第十九篇 MFU的优化提升方法03 等级模块类型子模块子子模块功能描述MFU影响因子优化优先级L0​算术逻辑单元(ALU)标量ALU整数ALU标量整数运算α_int = 0.1-0.3中浮点ALU标量浮点运算α_fp_scalar = 0.2-0.4中向量处理单元(VPU)SIMD单元128-bit SIMD短向量运算β_SIMD128 = 0.3-0.6高256-bit SIMD中向量运算β_SIMD256 = 0.4-0.7高512-bit SIMD长向量运算β_SIMD512 = 0.5-0.8极高矩阵处理单元(MPU)Tensor C 阅读详情

相关推荐

利用MATLAB 4f光学系统,在Python中进行弗劳恩霍夫衍射和傅里叶面滤波——用镜头模拟光学图像处理。.zip

1.版本:matlab2014a/2019b/2024b 2.附赠案例数据可直接运行。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

aardio高性能计数器演示

time.performance高性能计数器可以用在测量程序运行时间, 例如, 程序中耗时的算法,测量算法的运行周期和时间, 可以精确到毫秒ms

popdes的专栏 516

工业互联网工控安全与工业质检AI大模型建设方案.pptx

工业互联网工控安全与工业质检AI大模型建设方案.pptx

AAuto快手多线程计算圆周率

学习一下多线程,编写了圆周率计算的多线程程序,欢迎斧正! import time.performance io.open() var f = function(arg){     import math     var v=0     var N=arg.N     for j=arg.ind;N;arg.tn         v+=1/(1+(j/N)**2)     th

数学算子的天地 1988

通信行业CentOS 7内核网络栈优化:高并发连接下UDP/TCP性能调优与系统资源管理

内容概要:本文聚焦于CentOS 7系统在通信行业高并发场景下的性能调优实践,重点围绕内核网络栈优化展开,涵盖UDP/TCP缓冲区调整、文件句柄与连接跟踪表扩容、TIME_WAIT状态复用、软中断分布优化及tuned工具的自动化调优。通过具体配置参数和实际案例(如VoIP软交换系统)深入解析各项调优措施的设计原理与实施效果,有效解决高CPS下丢包、连接失败等问题,并展望了向云化、eBPF等动态智能调优方向的发展趋势。; 适合人群:从事通信系统运维、网络开发或Linux系统性能优化的技术人员,具备一定操作系统和网络基础知识,工作经验1年以上的中初级工程师。; 使用场景及目标:①应用于软交换、媒体网关、信令网关等高并发通信设备的系统调优;②解决UDP丢包、conntrack表满、TCP连接队列溢出等典型性能瓶颈;③提升系统在小包高频、低时延要求场景下的稳定性和吞吐能力。; 阅读建议:建议结合实际生产环境或测试平台同步验证文中配置,重点关注参数背后的物理意义(如BDP、softirq、conntrack机制),并配合ss、conntrack、dmesg等命令进行调优前后对比分析,确保安全可控地实施变更。

2024 《计算机网络》实验教学指导书.doc

2024 《计算机网络》实验教学指导书.doc

C语言和AAuto互相调用函数

学着快手开发环境中关于C语言与AAuto函数调用的例子,把两者合二为一做了一个小例子,练练手,学习之用。 //C语言和AAuto互相调用函数 code_c = /**** #include //该函数在C语言中声明,在AAuto中定义 const void aau(); void C() { io_reopen(); //调用AAuto

数学算子的天地 1871

不平衡电网下自抗扰顺序模型预测PWM整流器控制仿真模型(Simulink仿真实现)

内容概要:本文围绕面向城市空中交通的多无人机路径规划问题展开研究,提出了一套融合全局规划、动态避障与局部协同调整的综合路径规划方法。研究内容涵盖基于改进RRT算法与图论的全局路径规划、基于动态风险场和动态窗口法(DWA)的模型预测控制实现动态避障,以及基于分布式协同控制的多无人机局部路径协同策略。通过Matlab平台构建仿真环境,在多种典型城市交通场景下对所提方法进行了系统性验证,结果表明该方法在路径安全性、编队稳定性与任务效率方面表现优异。文章还深入探讨了算法的创新点与未来研究方向,为复杂城市环境下多无人机系统的自主协同提供了理论支撑与技术路径。; 适合人群:具备自动化、控制理论、计算机科学或相关领域基础知识,从事无人机系统、智能交通、路径规划、多智能体协同控制等方向研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①为城市空中交通系统中的多无人机安全、高效飞行提供可靠的路径规划解决方案;②支持在复杂、动态的城市场景中开展无人机自主导航、编队飞行与协同控制的技术研究与仿真验证。; 阅读建议:建议结合提供的Matlab代码进行实践操作,重点关注算法的具体实现细节、参数配置对性能的影响以及不同仿真场景下的实验设计,以深入理解各模块的集成逻辑与实际应用效果。

AAuto table数据类型的速度测试

用C++相应的数据类型与AAuto的table类型比较。 AAuto代码: import time.performance; io.open() //数组 tk=time.performance.tick() a={} for(i=1;1000000)   a[i]=i io.print(time.performance.tick()-tk) //哈希表 tk=time.performan

数学算子的天地 1605

Wireshark抓包分析:如何从HTTP流量中快速定位黑客攻击痕迹(附pcap文件)

本文通过Wireshark实战,详细解析了如何从HTTP流量中快速定位黑客攻击痕迹。文章提供了核心过滤策略,并重点剖析了如何识别SQL注入攻击的流量特征、揭露WebShell的隐蔽通信以及追踪攻击者在横向移动中的行为,帮助安全人员系统性地从pcap文件中还原完整攻击链。

sprite的博客 1008

基于ROS的机械臂手眼标定-Aruco使用与相机标定

基于ROS的机械臂手眼标定-Aruco使用与相机标定 折腾了一段时间的机械臂的手眼标定,相关资料挺多的,但使用起来都比较复杂,新手一般比较难搞懂。于是想做一个比较简单易懂易用的手眼标定程序。 程序都是Copy的开源代码,所以也开源出来: 开源地址:https://gitee.com/ohhuo/handeye-calib 作为手眼标定中的重要一环,相机中标定板位姿关系获取直接影响标定精度,我们使用aruco这个开源程序来实现坐标的获取。 #mermaid-svg-WkFpFkV4QqzXMvJ4 .labe

生活不止眼前的苟且 1万+

以矩阵乘积为例看AAuto的运行速度

刚刚接触AAuto,用矩阵乘积做一下AAuto的运行速度测试。注意系统配置不同,运行结果会有差异。上代码吧。 AAuto代码: import time.performance function matmul(A,n){ B={} for(i=1;n) for(j=1;n) { v=0; for(

数学算子的天地 1460

分离与合体题解(区间DP)

题目: 经过在机房里数日的切磁,LYD从社神牛那里学会了分离与合体,出关前,杜神牛给了他一个测试 杜神牛造了个区域,它们紧邻着排成了一行,编号1-n。在这經个区域里都放着一把OI界 的金钥匙,每一把都有一定的价值,LYD当然想得到它们了。然而杜神牛规定LYD不可以一下子 把它们全部拿走,而是每次只可以拿一把。为了尽快地拿到所有的金钥匙,LYD自然就用上了刚学的分离与合体特技。 开始LYD可以选择从1~n-11~n-11~n-1的任何一个区域(记为K)进入,进入后LYD会在K区域发 生分离,从而分离为两个小L

cqbz_lipengcheng的博客 368

范例-控制台-控制台画圆升级版:字符绘图类

class fig2d{     ctor(){         var points={{x=0;y=0}} //点数组         var psn=1 //点的个数         var tmppoints={}     }     xscale=1;     yscale=1;     add=function(x,y){         points[psn+1]=

数学算子的天地 1374

Akamai-3.0补环境逆向-DHL快递查询

那么我们的请求过程就是:1.请求首页的html文件,通过re或xpath,提取到这个url,拼接官网地址,得到这个js文件的地址。返回的_abck为0,表示环境正确,请求搜索接口返回200,说明返回的_abck正确,如果过程错误或环境补的有问题会返回403或428这两个状态码。那么,就是这个包返回的,而且这个包需要请求两次,第一次get请求,返回的这个-1的cookie,第二次请求,带上一个sensor_data的参数,进行post请求,最终返回这个0的cookie,代表你过了akamai这个盾。

2302_76420666的博客 2856

【python数据挖掘课程】二十八.基于LDA和pyLDAvis的主题挖掘及可视化分析

这是《Python数据挖掘课程》系列文章,前面很多文章都讲解了数据挖掘、机器学习,这篇文章主要讲解LDA和pyLDAvis算法,同时讲解如何读取CSV文本内容进行主题挖掘及可视化展示。文章比较基础,希望对你有所帮助,提供些思路,也是自己教学的内容。推荐大家购买作者新书《Python网络数据爬取及分析从入门到精通(分析篇)》,如果文章中存在错误或不足之处,还请海涵。 目录: 一.显示结果及安装 二.LDA主题挖掘 三.pyLDAvis可视化分析 四.小结

杨秀璋的专栏 1万+

累加和高效并行版本的AAuto串行实现

累加和也叫前缀和,举个例子:     原始数组:1 2 2 1      累加数组:1 3 5 6 按照累加和的这个原始定理,前一个和没算出来后一个是没法算的,想要并行看来行不通啦。实际上有办法解开这种纠缠,可参考这篇文章。 我只是把它用AAuto代码串行的实现了一下,你可以看到,可以同时做很多计算了,因为这些计算都是独立的了。上代码: io.open() var n=4 var

数学算子的天地 1359

AI Agent在医疗诊断中的智能应用研究

本文探讨了AIAgent在医疗诊断中的智能应用,分析了其技术原理、实际案例及发展挑战。AIAgent通过机器学习算法处理医疗数据,提升诊断准确性和效率,市场规模预计2025年达200亿美元。核心技术包括数据预处理、深度学习模型和隐私保护方法。应用案例涵盖肺癌筛查、阿尔茨海默病预测等,但面临数据偏差、伦理责任等挑战。未来趋势包括多模态学习、个性化医疗和量子计算融合。随着技术优化和伦理完善,AIAgent将成为医疗体系的重要组成部分。

郑伟强dev的专栏 95

AAuto 快手桌面快速开发语言

官方网站见 http://www.aau.cn/。 按照上面的介绍。AAuto是专用于桌面软件快速开发的新一代混合型编程语言, 兼具动态、静态语言优势,语法更可兼容大部分流行语言,学习成本低,开发速度快,并永久免费. 一键发布为绿色软件.生成独立EXE执行文件. 唯一能同时支持动态类型、静态类型开发的语言. 兼容流行C系语法、Pascal语法,学习成本最低. 可内嵌C语言、汇编、Java、

数学算子的天地 1347

大唐杯5G考前冲刺篇(回顾全文重点必看)

大唐杯习题复习指南

nimo观察者 1万+

【异常】QClaw客户端安装失败(OpenClaw资源解压出错)问题排查与修复指南: 安装失败:OpenClaw 资源解压出错。 请重新安装或联系支持。

摘要:QClaw客户端安装失败报错"OpenClaw资源解压出错"的主要原因是资源包解压异常,常见于安装包损坏、系统权限不足、安全软件拦截、旧版本残留或系统环境问题。解决方案分三步:1)快速修复:重新下载安装包、管理员权限运行、关闭安全防护;2)深度修复:清理旧版本残留、修复系统组件;3)终极方案:收集日志联系官方支持。建议优先检查安装包完整性并使用纯英文安装路径,80%问题可通过快速修复方案解决。

奶爸的编程之路,也就一周冷个三天 382

AAuto语言与AMPL表数据通信接口及AAuto语言执行AMPL代码函数

ampl名字空间AAuto代码: namespace ampl readtbl=function(tblname){ var file=assert(..io.open(tblname++".tab","r")) //读第一行 var str=file.read() assert(str!="","空文件") var ss=..string.split

数学算子的天地 1258

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

范例-数组排序-比较排序-选择排序升级版:优先级队列

参考了范例-数组排序-比较排序-选择排序中的代码,实现了优先级队列,速度还行,希望大家能够喜欢。 //优先级队列 class priorqueue{     ctor(...){         var priorarr={}         var infoarr={}         var heapsize = 0;         var arg={...}

数学算子的天地 1111

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

范例-控制台-连续正整数改进版

对范例库中控制台下的连续正整数做了改进,大家可以一试。 原版: io.open();  str = /*连续正整数 一个正整数有可能可以被表示为n(n>=2)个连续正整数之和,如: 15=1+2+3+4+5 15=4+5+6 15=7+8   请编写程序,根据输入的任何一个正整数,找出符合这种要求的所有连续正整数序列 */  io.print(str);    var n

数学算子的天地 962
上一篇: 累加和高效并行版本的AAuto串行实现
下一篇: Ideals, Varieties, and Algorithms
mathsoperator
博客等级 码龄21年 220粉丝 128原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值