精华内容
下载资源
问答
  • profiler

    2019-09-28 22:33:07
    推荐C++ 的profiler 用于GPU CPU 综合测试 FramePro http://www.puredevsoftware.com/ 可以在进度条上拉时间 查看GPU CPU bound 转载于:https://www.cnblogs.com/minggoddess/p/8073085.html...

    推荐C++ 的profiler 用于GPU CPU 综合测试

    FramePro

    http://www.puredevsoftware.com/

    可以在进度条上拉时间

    查看GPU CPU bound

    转载于:https://www.cnblogs.com/minggoddess/p/8073085.html

    展开全文
  • Profiler

    2015-12-10 10:59:09
    A. WaitForTargetFPS:   Vsync(垂直同步)功能所,即显示当前帧的CPU等待时间  ...用于记录尚不明确的时间消耗,以帮助进一步完善Profiler的统计。   C. Physics.Simulate:   当前帧物理模拟的CPU占用时间。
    A. WaitForTargetFPS: 
          Vsync(垂直同步)功能所,即显示当前帧的CPU等待时间 
       B. Overhead: 
          Profiler总体时间-所有单项的记录时间总和。用于记录尚不明确的时间消耗,以帮助进一步完善Profiler的统计。 
            C. Physics.Simulate: 
          当前帧物理模拟的CPU占用时间。 
       D. Camera.Render: 
          相机渲染准备工作的CPU占用量 
       E. RenderTexture.SetActive: 
          设置RenderTexture操作. 
          底层实现:1.比对当前帧与前一帧的ColorSurface和DepthSurface. 
                   2.如果这两个Buffer一致则不生成新的RT,否则则生成新的RT,并设置与之相对应的Viewport和空间转换矩阵. 
       F. Monobehaviour.OnMouse_ : 
          用于检测鼠标的输入消息接收和反馈,主要包括:SendMouseEvents和DoSendMouseEvents。(只要Edtor开起来,这个就会存在) 
       G. HandleUtility.SetViewInfo: 
          仅用于Editor中,作用是将GUI和Editor中的显示看起来与发布版本的显示一致。 
    H. GUI.Repaint: 
          GUI的重绘(说明在有使用原生的OnGUI) 
       I. Event.Internal_MakeMasterEventCurrent: 
          负责GUI的消息传送 
       J. Cleanup Unused Cached Data: 
          清空无用的缓存数据,主要包括RenderBuffer的垃圾回收和TextRendering的垃圾回收。 
             1.RenderTexture.GarbageCollectTemporary:存在于RenderBuffer的垃圾回收中,清除临时的FreeTexture. 
             2.TextRendering.Cleanup:TextMesh的垃圾回收操作 
       K. Application.Integrate Assets in Background: 
          遍历预加载的线程队列并完成加载,同时,完成纹理的加载、Substance的Update等. 
       L. Application.LoadLevelAsync Integrate: 
          加载场景的CPU占用,通常如果此项时间长的话70%的可能是Texture过长导致. 
       M. UnloadScene: 
          卸载场景中的GameObjects、Component和GameManager,一般用在切换场景时. 
       N. CollectGameObjectObjects: 
          执行上面M项的同时,会将场景中的GameObject和Component聚集到一个Array中.然后执行下面的Destroy. 
       O. Destroy: 
          删除GameObject和Component的CPU占用. 
       P. AssetBundle.LoadAsync Integrate: 
          多线程加载AwakeQueue中的内容,即多线程执行资源的AwakeFromLoad函数. 
       Q. Loading.AwakeFromLoad: 
          在资源被加载后调用,对每种资源进行与其对应用处理. 




    2. CPU Usage 
       A. Device.Present: 
          device.PresentFrame的耗时显示,该选项出现在发布版本中. 
       B. Graphics.PresentAndSync: 
          GPU上的显示和垂直同步耗时.该选项出现在发布版本中. 
       C. Mesh.DrawVBO: 
          GPU中关于Mesh的Vertex Buffer Object的渲染耗时. 
       D. Shader.Parse: 
          资源加入后引擎对Shader的解析过程. 
       E. Shader.CreateGPUProgram: 
          根据当前设备支持的图形库来建立GPU工程. 
    3. Memory Profiler 

       A. Used Total: 
          当前帧的Unity内存、Mono内存、GfxDriver内存、Profiler内存的总和. 
       B. Reserved Total: 
          系统在当前帧的申请内存. 
       C. Total System Memory Usage: 
          当前帧的虚拟内存使用量.(通常是我们当前使用内存的1.5~3倍) 
       D. GameObjects in Scene: 
          当前帧场景中的GameObject数量. 
       E. Total Objects in Scene: 
          当前帧场景中的Object数量(除GameObject外,还有Component等). 
       F. Total Object Count: 
          Object数据 + Asset数量. 

    4. Detail Memory Profiler 
       A. Assets: 
          Texture2d:记录当前帧内存中所使用的纹理资源情况,包括各种GameObject的纹理、天空盒纹理以及场景中所用的Lightmap资源. 
       B. Scene Memory: 
          记录当前场景中各个方面的内存占用情况,包括GameObject、所用资源、各种组件以及GameManager等(天般情况通过AssetBundle加载的不会显示在这里). 
       A. Other: 
          ManagedHeap.UseSize:代码在运行时造成的堆内存分配,表示上次GC到目前为止所分配的堆内存量. 
          SerializedFile(3): 
          WebStream:这个是由WWW来进行加载的内存占用. 
          System.ExecutableAndDlls:不同平台和不同硬件得到的值会不一样。 
      

    5. 优化重点 
       A. CPU-GC Allow: 
          关注原则:1.检测任何一次性内存分配大于2KB的选项 2.检测每帧都具有20B以上内存分配的选项. 
       B. Time ms: 
          记录游戏运行时每帧CPU占用(特别注意占用5ms以上的). 
       C. Memory Profiler-Other: 
          1.ManagedHeap.UsedSize: 移动游戏建议不要超过20MB. 
          2.SerializedFile: 通过异步加载(LoadFromCache、WWW等)的时候留下的序列化文件,可监视是否被卸载. 
          3.WebStream: 通过异步WWW下载的资源文件在内存中的解压版本,比SerializedFile大几倍或几十倍,重点监视.**** 
       D. Memory Profiler-Assets: 
          1.Texture2D: 重点检查是否有重复资源和超大Memory是否需要压缩等. 
          2.AnimationClip: 重点检查是否有重复资源. 
          3.Mesh: 重点检查是否有重复资源. 


    6. 项目中可能遇到的问题 

       A. Device.Present: 
          1.GPU的presentdevice确实非常耗时,一般出现在使用了非常复杂的shader. 
          2.GPU运行的非常快,而由于Vsync的原因,使得它需要等待较长的时间. 
          3.同样是Vsync的原因,但其他线程非常耗时,所以导致该等待时间很长,比如:过量AssetBundle加载时容易出现该问题. 
          4.Shader.CreateGPUProgram:Shader在runtime阶段(非预加载)会出现卡顿(华为K3V2芯片). 
       B. StackTraceUtility.PostprocessStacktrace()和StackTraceUtility.ExtractStackTrace(): 
          1.一般是由Debug.Log或类似API造成. 
          2.游戏发布后需将Debug API进行屏蔽. 

       C. Overhead: 
          1.一般情况为Vsync所致. 
          2.通常出现在Android设备上. 
       D. GC.Collect: 
          原因: 1.代码分配内存过量(恶性的) 2.一定时间间隔由系统调用(良性的). 
          占用时间:1.与现有Garbage size相关 2.与剩余内存使用颗粒相关(比如场景物件过多,利用率低的情况下,GC释放后需要做内存重排) 
       E. GarbageCollectAssetsProfile: 
          1.引擎在执行UnloadUnusedAssets操作(该操作是比较耗时的,建议在切场景的时候进行). 
          2.尽可能地避免使用Unity内建GUI,避免GUI.Repaint过渡GC Allow. 
          3.if(other.tag == GearParent.MogoPlayerTag)改为other.CompareTag(GearParent.MogoPlayerTag).因为other.tag为产生180B的GC Allow. 
       F. 少用foreach,因为每次foreach为产生一个enumerator(约16B的内存分配),尽量改为for. 
       G. Lambda表达式,使用不当会产生内存泄漏. 
       H. 尽量少用LINQ: 
          1.部分功能无法在某些平台使用. 
          2.会分配大量GC Allow. 
       I. 控制StartCoroutine的次数: 
          1.开启一个Coroutine(协程),至少分配37B的内存. 
          2.Coroutine类的实例 -- 21B. 
          3.Enumerator -- 16B. 
       J. 使用StringBuilder替代字符串直接连接. 
       K. 缓存组件: 
          1.每次GetComponent均会分配一定的GC Allow. 
          2.每次Object.name都会分配39B的堆内存.
    展开全文
  • async-profiler This project is a low overhead sampling profiler for Java that does not suffer from Safepoint bias problem. It features HotSpot-specific APIs to collect stack traces and to track memory...
  • adrenoprofiler

    2018-10-29 11:46:42
    adrenoprofiler 可以查看gpu渲染状态,非常实用的一个gpu工具
  • Profiler Issues

    2020-12-02 01:00:07
    m getting inconsistent results with the new profiler additions - I get the following error after deleting the profiler to re-export it: <pre><code> Traceback (most recent call last): File "/home/...
  • Remote profiler

    2021-01-06 05:41:53
    How to install and use appscale-remote-profiler: - install appscale-common, appscale-admin, appscale-taskqueue, appscale-datastore using code from this branch (or one comparably fresh version); - ...
  • Glulxe profiler

    2020-12-09 09:28:34
    <div><p>I thought people might appreciate being able to use the Glulxe profiler in Lectrote so they don't need to compile it themselves. <p>Porting Glulxe to emglken was easy enough. I set up the ...
  • <div><p>Change adds profiler conceptual documentation.</p><p>该提问来源于开源项目:nrfconnect/sdk-nrf</p></div>
  • Fix profiler

    2020-12-29 08:34:32
    5-avocado crashed if user provide non exsting profiler this patch address that , if profiler not avilable than framework handle gracefully handle <p>Signed-off-by: Praveen K Pandey </p><p>该提问来源于...
  • Oracle profiler

    2020-12-26 07:49:58
    <div><p>Issue #45: Profiler does not work with Oracle driver</p><p>该提问来源于开源项目:dg/dibi</p></div>
  • gaffer profiler

    2020-12-28 02:05:19
    s profiler, where nodes get coloured according to how much computation time they use. <p>I guess the relevant info is on the actual plugs isn't it - if I could just run a full scene traversal, ...
  • profiler-Snapdragon_Profiler记录

    千次阅读 2019-04-09 11:20:42
    title: profiler-Snapdragon_Profiler记录 categories: Profiler tags: [profiler, 记录, 分析, ta, snapdragon] date: 2019-04-06 14:54:24 comments: false profiler-Snapdragon_Profiler记录. 高通替代 ...

    title: profiler-Snapdragon_Profiler记录
    categories: Profiler
    tags: [profiler, 记录, 分析, ta, snapdragon]
    date: 2019-04-06 14:54:24
    comments: false

    profiler-Snapdragon_Profiler记录.


    高通替代 Adreno GPU Profiler 的产品, 更强大

    官方下载地址: https://developer.qualcomm.com/software/snapdragon-profiler

    安装时会要求安装这个 gtk-sharp-2.12.44.msi - https://dl.xamarin.com/GTKforWindows/Windows/gtk-sharp-2.12.44.msi

    相关资料

    作为高通adreno profiler的替代品,sdp是支持vulkan的。但是目前的sdp版本需要设备进行root才能进行vulkan的测试,所以一些不方便root的设备会比较麻烦

    实测

    打个简易安卓包测试一下, 手机使用的是高通芯片的 一加3

    1. 将目录 %UNITY_ROOT%\Editor\Data\PlaybackEngines\AndroidPlayer\Apk 下 Android 资源复制到 unity Assets\Plugins\Android 目录下, 修改 AndroidManifest.xml 增加一个 存储权限. (不加这个在 sdp 中打不了快照, 会踩这个坑: 弹出警告框提示没有读写存储权限

      <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE">
      </uses-permission>
      
    2. 增加一个简易的 shader, 使用一个 噪声图 做溶解效果, 同时修改颜色. 参考: shader

    3. 设置 bundleId (这里是 com.yang.xuan), 然后打包apk (aaa3.apk), 手机打开调色模式连接到pc上, 安装apk到手机上. 然后运行app

      λ adb devices # 列出设备, 查看设备是否连接成功
      List of devices attached
      8bd99883        device # 这个就是 一加3
      
      λ adb install aaa3.apk # 安装
      Performing Streamed Install
      Success
      
    4. 打开 sdp, connect 手机

      1. 连接手机. connect to a device 或者 file -> connect, 选中需要连接设备, 点击connect

      2. 新建一个 snapshot. capture -> new snapshot

      3. 选择app打快照. 根据 bundleId (这里是 com.yang.xuan) 选择, 然后点击 Take Snapshot.

        界面说明, glsl 的代码在这里 vert, frag


    踩坑

    弹出警告框提示没有读写存储权限

    这种情况一把出现在自己打的包用来测试, 默认的 AndroidManifest.xml 没有配置任何权限, 所以有个警告提示

    解决办法就是把 unity 内置的 AndroidManifest.xml 提取出来加上权限即可测试.

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" >
    </uses-permission>
    

    相关代码

    shader

    Shader "test/TestShder" {
        Properties {
            _MainTex ("Texture", 2D) = "white" {}
            _MainColor ("Color", Color) = (1, 1, 1, 1)
            _NoiseTex ("Noise (RGB)", 2D) = "white" {}
            _BurnAmout ("Burn Amount", Range(0.0, 1.0)) = 0.0
        }
    
        SubShader {
            Tags { "RenderType"="Opaque" }
            LOD 100
    
            Pass {
                CGPROGRAM
                #pragma vertex vert
                #pragma fragment frag
                #include "UnityCG.cginc"
    
                struct appdata {
                    float4 vertex : POSITION;
                    float2 uv : TEXCOORD0;
                };
    
                struct v2f {
                    float2 uv : TEXCOORD0;
                    float4 vertex : SV_POSITION;
                };
    
                sampler2D _MainTex;
                float4 _MainTex_ST;
                sampler2D _NoiseTex;
                
                float4 _MainColor;
                fixed _BurnAmout;
    
                v2f vert (appdata v) {
                    v2f o;
                    o.vertex = UnityObjectToClipPos(v.vertex);
                    o.uv = TRANSFORM_TEX(v.uv, _MainTex);
                    return o;
                }
    
                fixed4 frag (v2f i) : SV_Target {
                    fixed4 noiseCol = tex2D(_NoiseTex, i.uv);
                    clip(noiseCol.r - _BurnAmout); // discard
    
                    fixed4 col = tex2D(_MainTex, i.uv) * _MainColor;
                    return col;
                }
                ENDCG
            }
        }
    }
    

    vert

    #version 300 es
    
    uniform 	vec4 hlslcc_mtx4x4unity_ObjectToWorld[4];
    uniform 	vec4 hlslcc_mtx4x4unity_MatrixVP[4];
    uniform 	vec4 _MainTex_ST;
    in highp vec4 in_POSITION0;
    in highp vec2 in_TEXCOORD0;
    out highp vec2 vs_TEXCOORD0;
    vec4 u_xlat0;
    vec4 u_xlat1;
    void main()
    {
        vs_TEXCOORD0.xy = in_TEXCOORD0.xy * _MainTex_ST.xy + _MainTex_ST.zw;
        u_xlat0 = in_POSITION0.yyyy * hlslcc_mtx4x4unity_ObjectToWorld[1];
        u_xlat0 = hlslcc_mtx4x4unity_ObjectToWorld[0] * in_POSITION0.xxxx + u_xlat0;
        u_xlat0 = hlslcc_mtx4x4unity_ObjectToWorld[2] * in_POSITION0.zzzz + u_xlat0;
        u_xlat0 = u_xlat0 + hlslcc_mtx4x4unity_ObjectToWorld[3];
        u_xlat1 = u_xlat0.yyyy * hlslcc_mtx4x4unity_MatrixVP[1];
        u_xlat1 = hlslcc_mtx4x4unity_MatrixVP[0] * u_xlat0.xxxx + u_xlat1;
        u_xlat1 = hlslcc_mtx4x4unity_MatrixVP[2] * u_xlat0.zzzz + u_xlat1;
        gl_Position = hlslcc_mtx4x4unity_MatrixVP[3] * u_xlat0.wwww + u_xlat1;
        return;
    }
    

    frag

    #version 300 es
    
    precision highp float;
    precision highp int;
    uniform 	vec4 _MainColor;
    uniform 	mediump float _BurnAmout;
    uniform mediump sampler2D _NoiseTex;
    uniform mediump sampler2D _MainTex;
    in highp vec2 vs_TEXCOORD0;
    layout(location = 0) out mediump vec4 SV_Target0;
    vec4 u_xlat0;
    mediump vec4 u_xlat16_0;
    bool u_xlatb0;
    mediump float u_xlat16_1;
    void main()
    {
        u_xlat16_0.x = texture(_NoiseTex, vs_TEXCOORD0.xy).x;
        u_xlat16_1 = u_xlat16_0.x + (-_BurnAmout);
    #ifdef UNITY_ADRENO_ES3
        u_xlatb0 = !!(u_xlat16_1<0.0);
    #else
        u_xlatb0 = u_xlat16_1<0.0;
    #endif
        if(((int(u_xlatb0) * int(0xffffffffu)))!=0){discard;}
        u_xlat16_0 = texture(_MainTex, vs_TEXCOORD0.xy);
        u_xlat0 = u_xlat16_0 * _MainColor;
        SV_Target0 = u_xlat0;
        return;
    }
    
    展开全文
  • CLR Profiler.EXE

    2020-12-18 16:09:20
    CLR Profiler.EXE
  • SQL Profiler下载

    2018-07-31 16:11:51
    SQL Profiler是一个图形界面和一组系统存储过程,其作用如下: 图形化监视SQL Server查询; 在后台收集查询信息; 分析性能; 诊断像死锁之类的问题; 调试T-SQL语句; 模拟重放SQL Server活动; 也可以使用...
  • Laravel开发-profiler

    2019-08-27 21:03:10
    Laravel开发-profiler Laravel4的轮廓仪。Sebklaus/profiler的定制版本,是退休的juy/profiler的延续。
  • <div><p>This module is extracted from: https://bitbucket.org/anybox/odoo_profiler and https://bitbucket.org/tubui/odoo_profiler/branch/migrate_to_8.0 Continuation of conversation about: ...
  • <p>How to enable profiler view? (https://raw.githubusercontent.com/JCSama/CodeIgniter-develbar/gh-pages/images/Screen-Shot-develbar-profiler.png) <p>If develbar is enabled not showing profiler. ...
  • <div><p>This is the part of #7565 that adds unity profiler instrumentation to the diagnostics system and the visual profiler.</p><p>该提问来源于开源项目:microsoft/MixedRealityToolkit-Unity</p>...
  • 2020-07-06 13:19:27.832672: I tensorflow/core/profiler/lib/profiler_session.cc:154] Profiler session started. 2020-07-06 13:19:27.832742: I tensorflow/core/profiler/internal/gpu/rocm_tracer.cc:743] ...
  • 自定义标签,Profiler性能分析 //Profiler性能测试 Profiler.BeginSample("curve"); for (int i = 0; i < count; i++) { Debug.Log(i); } Profiler.EndSample();

     自定义标签,Profiler性能分析

    //Profiler性能测试
    
    Profiler.BeginSample("curve");
    for (int i = 0; i < count; i++)
    {
    Debug.Log(i);
    }
    
    Profiler.EndSample();

     

     

    展开全文
  • pip install line_profiler 用法, from line_profiler import LineProfiler from collections import defaultdict class Solution1(object): def groupAnagrams(self, strs): """ :type strs: List[str] :...
  • Disable Mini Profiler

    2021-01-08 11:46:41
    <div><p>Mini Profiler will be disabled when a solution is not in a debug mode, therefore Mini Profiler Startup Profiler won't be accessible. <p>Fixes: ...
  • CPU Profiler 可帮助您实时检查应用的 CPU 使用率和线程 Activity,并记录函数跟踪,以便您可以优化和调试您的应用代码。 要打开 CPU Profiler,请按以下步骤操作: 点击 View > Tool Windows > Android ...
  • cannot require profiler

    2020-12-01 20:49:40
    C:\Work\V8Tests\node_modules\profiler\build\Release\profiler.node at Module.load (module.js:356:32) at Function.Module._load (module.js:312:12) at Module.require (module.js:364:17) at require ...
  • [Adreno Profiler v4.0 - 64 bit下载地址]: https://developer.qualcomm.com/download/adrenoprofiler/adreno-profiler-64bit.zip [Adreno Profiler v4.0 使用说明]: 工具中自带文档; [SnapDragon profiler下载...
  • let begin_halide_profiler_ticks_dst_$ignore$_$ignore$_null_null = profiling_timer() $ignore_buf$[0] = uint32(0) ProfilerBuffer[13] = (ProfilerBuffer[13] + (profiling_timer() - begin...
  • Memory profiler failed

    2020-12-26 12:01:15
    <div><p>cpu profiler is ok,but memory profiler failed,without any result. <p>on nodejs v0.8.16,CentOS release 6.3 (Final)</p><p>该提问来源于开源项目:baryshev/look</p></div>
  • CLRProfiler4.EXE

    2020-12-18 16:13:03
    CLRProfiler4.EXE

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 15,795
精华内容 6,318
关键字:

profiler