笔记本几乎是人手必备的生产力工具,你也许知道笔记本分为轻薄本、全能本、游戏本,但是代码本你听说过吗? 最近有幸收到格蠹科技发来的幽兰代码本,以下是我对该笔记本的初体验。

一、什么是幽兰代码本?


幽兰代码本是格蠹科技专门为程序员打造的移动计算平台, 基于ARM架构的硬件设计,旨在彻底改变长期以来的交叉编译模式,为程序员提供本地化的开发和调试环境, 让他们可以在本机编写代码、在本机进行构建,并且在本机进行调试。

代码本配置:

  • 瑞芯微公司新推出的RK3588 SoC芯片为核心硬件
  • 内置多种功能强大的嵌入式硬件引擎,支持8K@60fps 的 H.265 和 VP9 解码器、 8K@30fps 的 H.264 解码器和 4K@60fps 的 AV1 解码器;支持 8K30fps 的 H.264 和H.265 编码器, 高质量的 JPEG 编码器/解码器,专门的图像预处理器和后处理器。
  • 内置 3D GPU,兼容 OpenGL ES1.1/2.0/3.2、OpenCL 2.2 和 Vulkan 1.2。 带有 MMU 的特殊 2D 硬件引擎将最大限度地提高显示性能,并提供流畅的操作体验。
  • 内置瑞芯微自研的48M像素 ISP(图像信号处理器),支持实现众多算法加速器, 如 HDR、 3A、LSC、3DNR、2DNR、锐化、去雾、鱼眼校正、伽马校正等。
  • 高算力 NPU 可支持 INT4/INT8/INT16/FP16 混合运算,其强大的兼容性, 可以轻松转换基于TensorFlow / MXNet/PyTorch/Caffe 等一系列框架的网络模型。
  • 具有高性能的 4 通道外部存储器接口(LPDDR4/LPDDR4X/LPDDR5),能够支持苛刻的存储器带宽。
  • 详细配置访问

二、代码本外观


  • 工艺设计:指笔记本的整体设计和制造工艺,包括外观的平滑、线条流畅、色彩搭配采用深灰色与黑色的经典组合。
  • 轻薄:笔记本的重量和厚度与轻薄本类似,轻薄程度高的笔记本给人一种时尚感和便携性。
  • 材质和质感:笔记本的材质是磨砂材质,既美观又提升了手感。
  • 接口丰富 : 有type-c接口,HDMI,USB接口*2,耳机接口,充电口,电源显示灯。

三、体验 & 性能测试

日常使用

以下截图均来自幽兰代码本 。

主界面 (可以通过设置进行快速的更换):

终端

首先使用Ctrl+Alt+T键盘快捷键或单击终端图标,打开终端。

  • 可以看到笔记本的操作系统是ubuntu 23.04版本
  • 对终端一些采用命令进行试用,程序切换流畅。

浏览器下载

  • 通过命令行apt install firefox直接下载FireFox浏览器 , 方便后面环境配置。

视频功能

在幽兰代码本观看视频:

下图是在幽兰代码本播放的是在幽兰上使用“二指禅”_哔哩哔哩_bilibili, 可以通过使用俩个手指来实现鼠标滚轮的操作,很容易操作,有了它就完全不需要鼠标了。

PDF 阅读

  • 幽兰代码本的PDF阅读器功能非常强大, 支持标签、索引、高亮、夜间模式、编辑、幻灯片呈现、连续阅读、双页阅读等功能。

  • 夜间模式 : 这个功能阅读pdf很舒服,看久眼睛不酸,我平时用的PDF软件都很少有这个功能

  • 高亮功能:

续航

  • 电源模式 支持均衡模式和节点模式, 满电量的话基本可以使用一天,相对于是轻薄本的俩倍续航。

性能测试

下面将对我的轻薄本(华硕无畏Pro14 售价4999) 与 幽兰代码本进行CPUGPU进行一些简单的测试对比

CPU测试:

  • cpu测试——轻薄本
cpt@LAPTOP-B2GKPKJG:~$ sysbench cpu --cpu-max-prime=20000 --threads=2 run// 素数上限2万,默认10秒,2个线程sysbench 1.0.18 (using system LuaJIT 2.1.0-beta3)Running the test with following options:Number of threads: 2 // 指定2个线程Initializing random number generator from current timePrime numbers limit: 20000// 每个线程产生的素数上限均为2万个Initializing worker threads...Threads started!CPU speed:events per second:3519.70General statistics:total time:10.0004s // 共耗时10秒单个线程total number of events:35200// 10秒内所有线程一共完成了35200次eventLatency (ms): min:0.53 avg:0.57 max:1.43 95th percentile:0.97 sum:19990.67// 俩个线程花费 总时间Threads fairness:events (avg/stddev): 17600.0000/8.00execution time (avg/stddev): 9.9953/0.00
  • 幽兰代码本
geduer@ulan:~$ sysbench cpu --cpu-max-prime=20000 --threads=2 run// 素数上限2万,默认10秒,2个线程sysbench 1.0.20 (using system LuaJIT 2.1.0-beta3)Running the test with following options:Number of threads: 2// 指定2个线程Initializing random number generator from current timePrime numbers limit: 20000// 每个线程产生的素数上限均为2万个Initializing worker threads...Threads started!CPU speed:events per second:1948.42General statistics:total time:10.0007s// 共耗时10秒单个线程total number of events:19490// 10秒内所有线程一共完成了19490次eventLatency (ms): min:1.02 avg:1.03 max: 11.81 95th percentile:1.03 sum:19995.41// 俩个线程花费 总时间Threads fairness:events (avg/stddev): 9745.0000/23.00execution time (avg/stddev): 9.9977/0.00

GPU测试:

我用的是glmark2GPU进行测试
glmark2 是开源的对OpenGL 2.0 ES 2.0的基准测试程序,一般用来对GPU进行基准测试。glmark提供了一系列丰富的测试,涉及图形单元性能(缓冲,建筑,照明,纹理等)的不同方面,允许进行更全面和有意义的测试。 每次测试进行10秒,并且单独计算帧速率。

  • 轻薄本——glmark2跑分 :
cpt@LAPTOP-B2GKPKJG:~$ glmark2** GLX does not support GLX_EXT_swap_control or GLX_MESA_swap_control!** Failed to set swap interval. Results may be bounded above by refresh rate.=======================================================glmark2 2021.02=======================================================OpenGL InformationGL_VENDOR: Microsoft CorporationGL_RENDERER: D3D12 (AMD Radeon(TM) Graphics)GL_VERSION:3.1 Mesa 21.2.6=======================================================** GLX does not support GLX_EXT_swap_control or GLX_MESA_swap_control!** Failed to set swap interval. Results may be bounded above by refresh rate.[build] use-vbo=false: FPS: 909 FrameTime: 1.100 ms** GLX does not support GLX_EXT_swap_control or GLX_MESA_swap_control!** Failed to set swap interval. Results may be bounded above by refresh rate.[build] use-vbo=true: FPS: 993 FrameTime: 1.007 ms** GLX does not support GLX_EXT_swap_control or GLX_MESA_swap_control!** Failed to set swap interval. Results may be bounded above by refresh rate.[texture] texture-filter=nearest: FPS: 962 FrameTime: 1.040 ms** GLX does not support GLX_EXT_swap_control or GLX_MESA_swap_control!** Failed to set swap interval. Results may be bounded above by refresh rate.[texture] texture-filter=linear: FPS: 922 FrameTime: 1.085 ms** GLX does not support GLX_EXT_swap_control or GLX_MESA_swap_control!** Failed to set swap interval. Results may be bounded above by refresh rate.[texture] texture-filter=mipmap: FPS: 979 FrameTime: 1.021 ms** GLX does not support GLX_EXT_swap_control or GLX_MESA_swap_control!** Failed to set swap interval. Results may be bounded above by refresh rate.[shading] shading=gouraud: FPS: 961 FrameTime: 1.041 ms** GLX does not support GLX_EXT_swap_control or GLX_MESA_swap_control!** Failed to set swap interval. Results may be bounded above by refresh rate.[shading] shading=blinn-phong-inf: FPS: 949 FrameTime: 1.054 ms** GLX does not support GLX_EXT_swap_control or GLX_MESA_swap_control!** Failed to set swap interval. Results may be bounded above by refresh rate.[shading] shading=phong: FPS: 977 FrameTime: 1.024 ms** GLX does not support GLX_EXT_swap_control or GLX_MESA_swap_control!** Failed to set swap interval. Results may be bounded above by refresh rate.[shading] shading=cel: FPS: 971 FrameTime: 1.030 ms** GLX does not support GLX_EXT_swap_control or GLX_MESA_swap_control!** Failed to set swap interval. Results may be bounded above by refresh rate.[bump] bump-render=high-poly: FPS: 946 FrameTime: 1.057 ms** GLX does not support GLX_EXT_swap_control or GLX_MESA_swap_control!** Failed to set swap interval. Results may be bounded above by refresh rate.[bump] bump-render=normals: FPS: 1021 FrameTime: 0.979 ms** GLX does not support GLX_EXT_swap_control or GLX_MESA_swap_control!** Failed to set swap interval. Results may be bounded above by refresh rate.[bump] bump-render=height: FPS: 1018 FrameTime: 0.982 ms** GLX does not support GLX_EXT_swap_control or GLX_MESA_swap_control!** Failed to set swap interval. Results may be bounded above by refresh rate.[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 976 FrameTime: 1.025 ms** GLX does not support GLX_EXT_swap_control or GLX_MESA_swap_control!** Failed to set swap interval. Results may be bounded above by refresh rate.[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 757 FrameTime: 1.321 ms** GLX does not support GLX_EXT_swap_control or GLX_MESA_swap_control!** Failed to set swap interval. Results may be bounded above by refresh rate.[pulsar] light=false:quads=5:texture=false: FPS: 889 FrameTime: 1.125 ms** GLX does not support GLX_EXT_swap_control or GLX_MESA_swap_control!** Failed to set swap interval. Results may be bounded above by refresh rate.[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 744 FrameTime: 1.344 ms** GLX does not support GLX_EXT_swap_control or GLX_MESA_swap_control!** Failed to set swap interval. Results may be bounded above by refresh rate.[desktop] effect=shadow:windows=4: FPS: 701 FrameTime: 1.427 ms** GLX does not support GLX_EXT_swap_control or GLX_MESA_swap_control!** Failed to set swap interval. Results may be bounded above by refresh rate.[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 557 FrameTime: 1.795 ms** GLX does not support GLX_EXT_swap_control or GLX_MESA_swap_control!** Failed to set swap interval. Results may be bounded above by refresh rate.[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 572 FrameTime: 1.748 ms** GLX does not support GLX_EXT_swap_control or GLX_MESA_swap_control!** Failed to set swap interval. Results may be bounded above by refresh rate.[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 626 FrameTime: 1.597 ms** GLX does not support GLX_EXT_swap_control or GLX_MESA_swap_control!** Failed to set swap interval. Results may be bounded above by refresh rate.[ideas] speed=duration: FPS: 534 FrameTime: 1.873 ms** GLX does not support GLX_EXT_swap_control or GLX_MESA_swap_control!** Failed to set swap interval. Results may be bounded above by refresh rate.[jellyfish] <default>: FPS: 805 FrameTime: 1.242 ms** GLX does not support GLX_EXT_swap_control or GLX_MESA_swap_control!** Failed to set swap interval. Results may be bounded above by refresh rate.[terrain] <default>: FPS: 211 FrameTime: 4.739 ms** GLX does not support GLX_EXT_swap_control or GLX_MESA_swap_control!** Failed to set swap interval. Results may be bounded above by refresh rate.[shadow] <default>: FPS: 796 FrameTime: 1.256 ms** GLX does not support GLX_EXT_swap_control or GLX_MESA_swap_control!** Failed to set swap interval. Results may be bounded above by refresh rate.[refract] <default>: FPS: 344 FrameTime: 2.907 ms** GLX does not support GLX_EXT_swap_control or GLX_MESA_swap_control!** Failed to set swap interval. Results may be bounded above by refresh rate.[conditionals] fragment-steps=0:vertex-steps=0: FPS: 904 FrameTime: 1.106 ms** GLX does not support GLX_EXT_swap_control or GLX_MESA_swap_control!** Failed to set swap interval. Results may be bounded above by refresh rate.[conditionals] fragment-steps=5:vertex-steps=0: FPS: 854 FrameTime: 1.171 ms** GLX does not support GLX_EXT_swap_control or GLX_MESA_swap_control!** Failed to set swap interval. Results may be bounded above by refresh rate.[conditionals] fragment-steps=0:vertex-steps=5: FPS: 927 FrameTime: 1.079 ms** GLX does not support GLX_EXT_swap_control or GLX_MESA_swap_control!** Failed to set swap interval. Results may be bounded above by refresh rate.[function] fragment-complexity=low:fragment-steps=5: FPS: 886 FrameTime: 1.129 ms** GLX does not support GLX_EXT_swap_control or GLX_MESA_swap_control!** Failed to set swap interval. Results may be bounded above by refresh rate.[function] fragment-complexity=medium:fragment-steps=5: FPS: 904 FrameTime: 1.106 ms** GLX does not support GLX_EXT_swap_control or GLX_MESA_swap_control!** Failed to set swap interval. Results may be bounded above by refresh rate.[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 909 FrameTime: 1.100 ms** GLX does not support GLX_EXT_swap_control or GLX_MESA_swap_control!** Failed to set swap interval. Results may be bounded above by refresh rate.[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 909 FrameTime: 1.100 ms** GLX does not support GLX_EXT_swap_control or GLX_MESA_swap_control!** Failed to set swap interval. Results may be bounded above by refresh rate.[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 959 FrameTime: 1.043 ms=======================================================glmark2 Score: 829=======================================================
  • 幽兰代码本——glmark2跑分 :
geduer@ulan:~$ glmark2-wayland=======================================================glmark2 2021.02=======================================================OpenGL InformationGL_VENDOR: PanfrostGL_RENDERER: Mali-G610 (Panfrost)GL_VERSION:3.0 Mesa 23.0.0-devel (git-120202c675)=======================================================[build] use-vbo=false: FPS: 1462 FrameTime: 0.684 ms[build] use-vbo=true: FPS: 1813 FrameTime: 0.552 ms[texture] texture-filter=nearest: FPS: 1825 FrameTime: 0.548 ms[texture] texture-filter=linear: FPS: 1759 FrameTime: 0.569 ms[texture] texture-filter=mipmap: FPS: 1350 FrameTime: 0.741 ms[shading] shading=gouraud: FPS: 1374 FrameTime: 0.728 ms[shading] shading=blinn-phong-inf: FPS: 1308 FrameTime: 0.765 ms[shading] shading=phong: FPS: 1299 FrameTime: 0.770 ms[shading] shading=cel: FPS: 1224 FrameTime: 0.817 ms[bump] bump-render=high-poly: FPS: 873 FrameTime: 1.145 ms[bump] bump-render=normals: FPS: 1549 FrameTime: 0.646 ms[bump] bump-render=height: FPS: 1422 FrameTime: 0.703 ms[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 1510 FrameTime: 0.662 ms[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 841 FrameTime: 1.189 ms[pulsar] light=false:quads=5:texture=false: FPS: 2075 FrameTime: 0.482 ms[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 315 FrameTime: 3.175 ms[desktop] effect=shadow:windows=4: FPS: 825 FrameTime: 1.212 ms[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 296 FrameTime: 3.378 ms[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 253 FrameTime: 3.953 ms[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 277 FrameTime: 3.610 ms[ideas] speed=duration: FPS: 615 FrameTime: 1.626 ms[jellyfish] <default>: FPS: 1028 FrameTime: 0.973 ms[terrain] <default>: FPS: 72 FrameTime: 13.889 ms[shadow] <default>: FPS: 725 FrameTime: 1.379 ms[refract] <default>: FPS: 272 FrameTime: 3.676 ms[conditionals] fragment-steps=0:vertex-steps=0: FPS: 2024 FrameTime: 0.494 ms[conditionals] fragment-steps=5:vertex-steps=0: FPS: 1566 FrameTime: 0.639 ms[conditionals] fragment-steps=0:vertex-steps=5: FPS: 2256 FrameTime: 0.443 ms[function] fragment-complexity=low:fragment-steps=5: FPS: 1643 FrameTime: 0.609 ms[function] fragment-complexity=medium:fragment-steps=5: FPS: 1337 FrameTime: 0.748 ms[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 1911 FrameTime: 0.523 ms[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 2176 FrameTime: 0.460 ms[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 1660 FrameTime: 0.602 ms=======================================================glmark2 Score: 1240 =======================================================

四、总结 & 评价

优势:

  • 接口丰富。
  • Linux环境,方便学习工作使用。
  • 续航能力强,3小时电量仅用33%的电量。
  • 键程合适、反馈力度敏捷。
  • 触摸板是摩擦材质,触感灵敏,防指纹。
  • 性价比高,售价只需3588。
  • 外观极简,颜值高,手感好。

使用人群:

  • 在ARM平台上从事开发工作的软件工程师或者希望学习ARM架构的研究者
  • 开发LINUX系统软件或者应用软件的程序员、测试工程师或者软件安全研究者
  • 学习和钻研计算机软硬件原理的大中院校学生和教师

以上就是我对幽兰代码本的初体验,如果你还想了解更多可以访问幽兰代码本 以及 幽兰代码本使用教程