JUnion为 Java 提供结构类型
JUnion 用于为 Java 编程语言提供结构类型。
功能特性
-
结构类型
-
自动对齐数据
-
手动对齐数据
-
创建结构类型的数组
-
64 位可寻址数组
-
修改原生 DirectByteBuffers
-
检查数组下标
-
嵌套结构
-
结构引用
-
空引用检查
-
数组切割
-
泛型
-
栈分配
查看更多特性介绍 https://tehleo.github.io/junion/features.html
当创建 int 数组时,我们有两个主要选项:
int[] intArray = new int[1000]; Integer[] intBoxedArray = new Integer[1000];
那么,intArray, intBoxedArray 需要多少个字节才能存储 1000 个 int 数据?结果如下 ——
intArray
4016 bytes 4*1000 + ~16(around 16 bytes for array header)
intBoxedArray
20016 bytes (4 + ~12 + ~4)*1000 + ~16
(具体数据取决于 VM)
可以看到,后者几乎是前者的 5 倍,因此我们应该偏向于选择使用原始数组 (primitive arrays)。
考虑这样一个问题
class Point { float x,y;} Point[] arr = new Point[500];
arr
占用了 14016 个字节,而数据包含了 500 个 points,每个 points 有两个浮点数,因此 4000 个字节应该足够了。
但如果 Point 是一个结构类型(struct),arr
大约只占用 4000 个字节。
使用 JUnion,可以通过 @Struct 注解标记一个类来做到这一点!
创建 struct Vec3:
@Struct public class Vec3 { public float x,y,z; }
然后,你可以将其用作:
//Create a new struct array Vec3[] arr = Vec3[10]; arr[5].x = 10; Vec3 v = arr[5]; ... // ByteBuffer a = ByteBuffer.allocateDirect(10*Mem.sizeOf(Vec3.class)) .order(ByteOrder.nativeOrder()); //Modify Direct Native Bytebuffer as it were a struct Vec3 arr = Mem.wrap(a); arr[5].x = 10; ...
性能测试
评论
jHiccup为 Java 提供运行时响应时间分析
AzulSystem公司于12月13日宣称发布了开源工具jHiccup,设计该工具的目的是对与应用程序底层运行平台相关的暂停和延迟(或“hiccups”)做出度量。新工具的功能与Azul的Jitter
jHiccup为 Java 提供运行时响应时间分析
0
jHiccup为 Java 提供运行时响应时间分析
Azul System公司于12月13日宣称发布了开源工具jHiccup,设计该工具的目的是对与应用
jHiccup为 Java 提供运行时响应时间分析
0
GeoAPI为 OGC/ISO 标准提供一组 Java 接口
GeoAPI为地理空间应用提供了一套编程接口。在一系列的包或模块中,GeoAPI3.0定义了元数据处理和大地测量参考(地图投影)的接口。GeoAPI接口严格遵循国际标准化组织(ISO)在其19100系
GeoAPI为 OGC/ISO 标准提供一组 Java 接口
0
GeoAPI为 OGC/ISO 标准提供一组 Java 接口
GeoAPI 为地理空间应用提供了一套编程接口。在一系列的包或模块中,GeoAPI 3.0定义了元数
GeoAPI为 OGC/ISO 标准提供一组 Java 接口
0
ObjectiveResource为 Objective-C 提供 Rubyisms
ObjectiveResource是将Rails的ActiveResource框架移植到Objective-C的项目。其主要目的是让iPhone应用程序可快速而且轻松的连接到运行有Rails的服务器。
ObjectiveResource为 Objective-C 提供 Rubyisms
0
Tigon MyBatis为 Mapper 提供增强
TigonMyBatis为Spring工程中MyBatis的Mapper提供增强,主要有以下特点:代码又少又壮,绝不做多余的事情仅需Mapper继承接口,实现增 删 改 查,无额外配置,爽到没女朋友用
Tigon MyBatis为 Mapper 提供增强
0