• 你听说过什么是代码本吗? (幽兰代码本初体验)


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

    一、什么是幽兰代码本?

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

    代码本配置:

    image.png

    • 瑞芯微公司新推出的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),能够支持苛刻的存储器带宽。
    • 详细配置访问

    二、代码本外观

    45316a5fda9a5f35f4e60b2620932ae.jpg
    7d6d96951592742c5e910337df9ff3b.jpg

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

    三、体验 & 性能测试

    日常使用

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

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

    a7f33f3cb63887bb8697d09511fe5d1.png

    终端

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

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

    浏览器下载

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

    f84a84bd60baaff92cfa53e539b2ed3.png

    视频功能

    在幽兰代码本观看视频:

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

    cee67ca393cacf85d206ed5f329718c.png

    PDF 阅读

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

    c15074a175dc3a3f9bfd68a22536ede.png

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

    9da9ab2762036e4cbbc66397e0a4e26.png

    • 高亮功能:

    fecdd7014a3a333ee116134a8232fba.png

    续航

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

    8726722f560b6476b5959b9fe455707.png

    性能测试

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

    image.png

    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 time
    
    
    Prime numbers limit: 20000  // 每个线程产生的素数上限均为2万个
    
    Initializing worker threads...
    
    Threads started!
    
    CPU speed:
        events per second:  3519.70
    
    General statistics:
        total time:                          10.0004s   // 共耗时10秒  单个线程
        total number of events:              35200  // 10秒内所有线程一共完成了35200次event
    
    Latency (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.00
        execution time (avg/stddev):   9.9953/0.00
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 幽兰代码本
    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 time
    
    
    Prime numbers limit: 20000// 每个线程产生的素数上限均为2万个
    
    Initializing worker threads...
    
    Threads started!
    
    CPU speed:
        events per second:  1948.42
    
    General statistics:
        total time:                          10.0007s// 共耗时10秒  单个线程
        total number of events:              19490  // 10秒内所有线程一共完成了19490次event
    
    Latency (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.00
        execution time (avg/stddev):   9.9977/0.00
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31

    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 Information
        GL_VENDOR:     Microsoft Corporation
        GL_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
    =======================================================
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 幽兰代码本——glmark2跑分 :
    geduer@ulan:~$ glmark2-wayland
    =======================================================
        glmark2 2021.02
    =======================================================
        OpenGL Information
        GL_VENDOR:     Panfrost
        GL_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 
    =======================================================
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45

    四、总结 & 评价

    优势:

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

    使用人群:

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

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

  • 相关阅读:
    原生小程序小话题——事件绑定
    带你从源码看看webpack 的构建流程(下)?
    9. 吴恩达机器学习-推荐系统
    基于FPGA的运动补偿模块设计与实现(Matlab源代码)
    友元、异常
    tensorflow模型训练图片
    2022-06-22 用python合并多个文本文件
    Springboot+学生作业管理系统 毕业设计-附源码251208
    STViT-R 代码阅读记录
    Toolbar控件 导航栏
  • 原文地址:https://blog.csdn.net/weixin_49486457/article/details/131801324