CS+ PCのスペックによる処理速度の違い

はじめまして。

初めてCS+を使ってC言語によるプログラムを作成したのですが、同じプロジェクト・ソースファイルを使用しているのに違うPCを使用したら処理速度が遅くなりました。

もともとWindous10 32bit CORE i3のPCでプロフラムを作成して、それをWindous10 64bit CORE i5のPCで動かしたら遅くなったのでPCのスペックで処理速度は変わってくるのでしょうか?

通信はE1エニュレータで行い、マイコンはRL78/F13を使用しています。

初歩的な質問で申し訳ございませんが、よろしくお願い致します。

  • Windowsが32bit版から64bit版に変っていますが、アプリ(CS+)は32bit版のままなのが原因かもしれません?
    64bit版Windowsで32bit版アプリを動作させる際、エミュレーション機能が動作するため、そのオーバーヘッドで遅くなっている可能性が考えられます。
    64bit版CS+で試されてはいかがでしょうか。
  • 吉光屋の次男坊様

    ご回答ありがとうございます。
    64bit版のものがあるんですね。
    一度試してみようと思います。
  • すみません。もしかしたら、64bit版 無いかもしれません。

    "CS+" "64bit"で検索してヒットした「ツール製品の動作環境」のページをさっと見たため、
    ページ内でCS+とe2studioの項目を見分けていませんでした。
  • AOさん、こんにちは。NoMaYと申します。

    もう少し具体的に何の処理速度が遅くなったか(処理時間が長くなったか)を知りたいです。ビルド時間でしょうか?ダウンロード時間でしょうか?それともエディタウィンドウ上でのカーソル移動速度とかでしょうか?

    ちなみに、ビルド時間に関しては、ウィルススキャンソフトの種類の違いも結構関係しそうです。私のPCの一つには、NTT回線を契約した時のディスクに付いてきたTREND MICROのウィルススキャンソフトが入っているのですが、それによる「リアルタイムスキャン」を無効にした場合、ビルドが2~3倍速くなったりしますね。

    あと、CS+の64ビット版は無いです。(e2 studio(というかベースのEclipse)はメモリイーターですので、最大でも3GBしか使えない32bit版から、Windows10 Home 64bit版で128GB、Windows 10 Pro/Enterprise/Education 64bit版では2TB、まで使えるという64bit版へ移行して行くのは、e2 studioではそうせざるを得ないかな、とは思います。)

    [追記] 19:21

    それから、どれぐらい遅くなったのかも知りたいです。

  • NoMayさん、ご指摘ありがとうございます。
    AOさん、64bit版が無いのにあのように記載して、探すのにお手数をかけさせたかも...すみませんでした。

    しかし、今後、統合開発環境の主流はe2studioになっていくのでしょうか。
    Eclipseは、javaやAndroidアプリで使ったのですが、動作が全般的に重くて大嫌いなんですけどね。
  • > もともとWindous10 32bit CORE i3のPCでプロフラムを作成して、それをWindous10 64bit CORE i5のPCで動かしたら遅くなったのでPCのスペックで処理速度は変わってくるのでしょうか?

    Core i3 や Core i5 はもう 10年くらい続いているインテルの PC 向けプロセッサのブランドですが、世代や動作周波数の違いで処理速度は必ずしも Core i5 の方が速いとも限らないので、先ずはその辺りからご確認されることをお勧めします。
  • CPUだけでなく、HDD/SSDの速度も大きく影響しそうです。
    //GPUはほとんど関係ないです。
  • こんにちは。
    みなさんご回答ありがとうございます!

    吉光屋の次男坊様  
    いえいえ!お気になさらず!ありがとうございました。
    NoMaY様
    64bit版はないのですね!承知致しました。
    遅くなったのはプログラムを実行したときの処理速度です。

    調べてみた結果、while文ループでの4msタイマが原因でした。

    プログラムの内容としては
    void main(void){

    プログラム内容記述

    tm_4s(); //4msタイマ関数呼び出し

    }

    void tm_4s(void){ //4msタイマ関数

    long cnt_4ms=0;

    while(cnt_4ms<=7500){ //ループで4msタイマ作成
    cnt_4ms++;
    }
    }
    ですが64bitのPCでE1エミュレータ使用し4msタイマの時間を測定すると8.5msになりました。

    また下記の様にmain関数の中に直接ループを持ってきて
    void main(void){

    プログラム内容記述

    while(cnt_4ms<=2100){ //ループで4msタイマ作成
    cnt_4ms++;
    }
    cnt_4ms=0;
    }
    にしたところ64bitのPCでもちゃんと4msタイマが作成されました。
    4msタイマを関数で作成した時とループ回数も異なり、関数にしたことで何か問題が起こっていると考えていますが未だに原因がつかめていない状況です。
  • AOさん、こんにちは。NoMaYです。

    なるほど、そういうことでしたか。その場合、私ですと、まず双方でビルドされたMOTファイルとMAPファイルを比較してみますね。MOTファイルが異なるようであれば、コンパイラのバージョンが違っていないか、とかですかね。(ですが、新しくインストールしたCS+とCC-RXでしょうから、遅くなっているのは腑に落ちないことでもありますが。) MOTファイルが同じであれば、何か別の原因でしょうし、、、

  • 外部関数化すると遅くなり(core i3時4ms、core i5時8.5ms)、main関数内のループでは同じ(どちらも4ms)という点から、外部関数呼び出し部に問題があるのかも。
    NoMayさんが仰られる「コンパイラのバージョン違い」の可能性も有りますが、E1エミュレータで何らかの遅れ(関数読出しでオーバーヘッド)が発生していることも考えられます。
    マイコンにプログラムを書き込み、エミュレータを外した状態で、動作比較してはいかがでしょうか?