zoukankan      html  css  js  c++  java
  • 16011301(统计指令数影响耗时)

    【目标】

    统计指令数影响耗时

    【思路】

    1 相同模型,换材质之后


    2 看下ShaderComplexity



    配置文件中


    usf中计算颜色方式


    也就是越复杂,就颜色 绿->红->白


    3 耗时统计显示

    将有用的集合起来吧


    4 每个Component的耗时


    5 添加一列百分比,用于选中某一列排序时,进行百分比计算



    WxTextureStatsBrowser这个是做啥的??

    WxGameStatsVisualizer ?



    上面的耗时统计方法

    appCycle

    计算公式

    GSecondsPerCycle * 1000.f * dwTimes





    【步骤】

    1 添加一列Percent

    下图




    WxPrimitiveStatsBrowser.UpdatePercentList.

    1. void WxPrimitiveStatsBrowser::UpdatePercentList(UBOOL bResizeColumns/*=TRUE*/)
    2. {
    3. BeginUpdate();
    4. ListControl->Freeze();
    5. {
    6. INT nCount = ListControl->GetItemCount();
    7. //Get the aggregate count
    8. wxListItem ItemData;
    9. ItemData.SetId(0);// 行
    10. ItemData.SetColumn(WxPrimitiveStatsBrowser::PrimarySortIndex);
    11. ItemData.SetMask(wxLIST_MASK_TEXT);
    12. ListControl->GetItem(ItemData);
    13. //Get the value
    14. FString TotalValue = ItemData.GetText();
    15. // Strip off
    16. INT NameStartIndex = TotalValue.InStr(TEXT(","));
    17. while(NameStartIndex != INDEX_NONE)
    18. {
    19. TotalValue = TotalValue.Left(NameStartIndex)+ TotalValue.RightChop(NameStartIndex+1);
    20. NameStartIndex = TotalValue.InStr(TEXT(","));
    21. }
    22. INT nTotalValue = appAtoi(*TotalValue);
    23. for( INT RowIndex=0; RowIndex<nCount; RowIndex++ )
    24. {
    25. //Get the aggregate count
    26. wxListItem ItemData;
    27. ItemData.SetId(RowIndex);// 行
    28. ItemData.SetColumn(WxPrimitiveStatsBrowser::PrimarySortIndex);
    29. ItemData.SetMask(wxLIST_MASK_TEXT);
    30. ListControl->GetItem(ItemData);
    31. //Get the value
    32. //Get the value
    33. FString ItemValue = ItemData.GetText();
    34. // Strip off
    35. INT NameStartIndex = ItemValue.InStr(TEXT(","));
    36. while(NameStartIndex != INDEX_NONE)
    37. {
    38. ItemValue = ItemValue.Left(NameStartIndex) + ItemValue.RightChop(NameStartIndex+1);
    39. NameStartIndex = ItemValue.InStr(TEXT(","));
    40. }
    41. INT nValue = appAtoi(*ItemValue);
    42. FLOAT Percent = (FLOAT)nValue / (FLOAT)nTotalValue;
    43. ListControl->SetItem( RowIndex, PCSBC_Percent, *FString::Printf(TEXT("%.3f%%"),Percent* 100.f) ); // Percent
    44. }
    45. // Set proper column width.
    46. if(bResizeColumns == TRUE)
    47. {
    48. SetAutoColumnWidth();
    49. }
    50. }
    51. ListControl->Thaw();
    52. EndUpdate();
    53. }

    3 测试StaticMesh的时间消耗统计,在TStaticMeshDrawList.DrawElement 中
    1. #if STATS
    2. ...
    3. // Grab our start time
    4. DWORD StartCycles = appCycles();
    5. #endif
    6. ....
    7. #if STATS
    8. // thread while be updated by this thread
    9. Element.Mesh->PrimitiveSceneInfo->Component->DrawTimes += (appCycles() - StartCycles) * GSecondsPerCycle * 1000.f;
    10. #endif




    4 把它显示列表中


    5

    图中Stat面板统计的DrawCall数量和DrawTimes于Stat指令统计的有出入


    6 添加分类统计,添加隐藏显示勾选


    7












  • 相关阅读:
    「BZOJ 1297」「SCOI 2009」迷路「矩阵乘法」
    「BZOJ 1831」「AHOI 2008」逆序对「贪心」
    「BZOJ 1791」「IOI 2008」Island「基环树」
    WC2019 冬眠记
    「ZOJ 1354」Extended Lights Out「高斯消元」
    「BZOJ 3270」博物馆「高斯消元」
    「学习笔记」泰勒级数
    获取iPhone的UDID
    面试题
    Java的post(HTTPS)请求-----接口测试
  • 原文地址:https://www.cnblogs.com/username/p/6838049.html
Copyright © 2011-2022 走看看