このAdobe Flexスクリプトの速度を改善するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/1806767

  •  05-07-2019
  •  | 
  •  

質問

最初のAdobe Flexアプリケーションに取り組んでいますが、実行が非常に遅いコードセクションがあります(ただし、正常に機能します!)。

CC_Outputはテキストコントロールであり、他のすべてのコントロールはチェックボックス(CC、CC_Durationなど)です

ご協力いただければ幸いです!

    

<mx:Script>                   


        private function updateLabel():void {
            var HPI_Score:Number = 0;
            if (CC.selected) {CC_Output.text = "CC/HPI - Brief";}

            if (!CC.selected) {
                CC_Output.text = "CC/HPI - Inadequate";
            } else {

                if (CC_Duration.selected) {HPI_Score=HPI_Score+1;}
                if (CC_Location.selected) {HPI_Score=HPI_Score+1;}
                if (CC_Quality.selected) {HPI_Score=HPI_Score+1;}
                if (CC_Severity.selected) {HPI_Score=HPI_Score+1;}
                if (CC_Timing.selected) {HPI_Score=HPI_Score+1;}
                if (CC_Context.selected) {HPI_Score=HPI_Score+1;}
                if (CC_Modify.selected) {HPI_Score=HPI_Score+1;}
                if (CC_Assoc.selected) {HPI_Score=HPI_Score+1;}
                if (CC_Chronic_Dx.selected) {HPI_Score=HPI_Score+4;}

                if (HPI_Score > 3) {CC_Output.text = "CC/HPI - Extended";}
            }
        }

</mx:Script>
<mx:TextArea id="LBL" x="262" y="28" enabled="true" visible="true" width="142"/>
<mx:CheckBox x="10" y="71" label="Duration" id="CC_Duration" enabled="true" visible="true" click="updateLabel();"/>
<mx:CheckBox x="10" y="92" label="Location" id="CC_Location" enabled="true" visible="true" click="updateLabel();"/>
<mx:CheckBox x="10" y="113" label="Quality" id="CC_Quality" enabled="true" visible="true" click="updateLabel();"/>
<mx:CheckBox x="10" y="134" label="Severity" id="CC_Severity" enabled="true" visible="true" click="updateLabel();"/>
<mx:CheckBox x="10" y="155" label="Timing" id="CC_Timing" enabled="true" visible="true" click="updateLabel();"/>
<mx:CheckBox x="10" y="176" label="Context" id="CC_Context" enabled="true" visible="true" click="updateLabel();"/>
<mx:CheckBox x="10" y="197" label="Modifying Factors" id="CC_Modify" enabled="true" visible="true" click="updateLabel();"/>
<mx:CheckBox x="10" y="218" label="Assoc Signs/Symptoms" id="CC_Assoc" enabled="true" visible="true" click="updateLabel();"/>
<mx:CheckBox x="10" y="239" label="Status of 3 Chronic Dx" id="CC_Chronic_Dx" enabled="true" visible="true" click="updateLabel();"/>
<mx:Label x="10" y="29" text="CC/HPI" fontWeight="bold" id="CC_Output"/>

役に立ちましたか?

解決

真空状態では、そのコードはラップトップで正常に実行されます(CCコントロールを追加した場合)。

高速で終了するために少し書き直したので、場合によっては少し改善されるかもしれません。

        private function updateLabel():void
    {
        const messageInadequate:String = "CC/HPI - Inadequate";
        const messageBrief:String = "CC/HPI - Brief";
        const messageExtended:String = "CC/HPI - Extended";

        if (!CC.selected)
        {
            CC_Output.text = messageInadequate;
            return;
        }

        if (CC_Chronic_Dx.selected)
        {
            CC_Output.text = messageExtended;
            return;
        }

        var HPI_Score:int = 0;

        if (CC_Duration.selected) HPI_Score++;
        if (CC_Location.selected) HPI_Score++;
        if (CC_Quality.selected) HPI_Score++;
        if (CC_Severity.selected) HPI_Score++;
        if (CC_Timing.selected) HPI_Score++;
        if (CC_Context.selected) HPI_Score++;
        if (CC_Modify.selected) HPI_Score++;
        if (CC_Assoc.selected) HPI_Score++;

        if (4 > HPI_Score)
        {
            CC_Output.text = messageBrief;
        }
        else
        {
            CC_Output.text = messageExtended;
        }
    }

他のヒント

目的に合わせて1つのコンポーネントをビルドし、そのコンポーネントをメインアプリケーションにインポートして使用します。ファイルサイズが小さくなり、パフォーマンスが向上します。

動作が遅いのは奇妙です。コードには特別なことは何もありません。

はい、コードはきれいではありませんが、ここではパフォーマンスに影響しません。

Flex Profilerを実行して、可能性のあるボトルネックを見つけます(存在する場合)。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top