|
00104
macでVS2010
登録日:2010/07/24 22:50:33
更新日:2010/07/24 22:50:33
月に1回大きな買い物をしているような気がします。
先月ipadを購入して、今月mac miniを購入してしまいました。
ちなみに先々月にミニノート買ってます・・・
ipadの開発環境が欲しくてmac mini買いました。
で、実際試したのが、
mac上でのVisual Studio の起動です。(あれ・・・
macにParallels Desktop 5 体験版 をインストール!
Parallels Desktopは、仮想OSをインストールできるソフトです。
Parallels Desktop上にWindowsXPをインストール!
WindowsXPにVisual Studio をインストール!
実行するとこんな感じです。
まるでmac上で動いているみたいですよね。
どちらが先かわからないですが、
Windows7のXPモードと似ている感じがします。Windows7上で仮想OSのアプリを実行する感じが。
動作中の感想としては、
仮想環境のXPは結構さくさく動きます。
ホスト側のmacは重たいです。
購入したmacのメモリが2GBだからかな。CPUはCore2 Duo 2GHzです。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
続きを見る
|
|
00103
iPadでVS2010
登録日:2010/06/28 0:24:01
更新日:2010/06/28 0:34:09
今話題のiPadが手に入ったので、早速リモートソフトをインストールして
WindowsをリモートしVisual Studio を実行してみました。
iPad手に入れたらwindowsのリモートをしてみようと決めてましたので!
写真には出て無いですが、iPad側のソフトキーボードで日本語を入力する事も可能です。
Windows立ち上げ
Visual Studio 2010
使用リモートソフト
iTap RDP Client
※WindowsのProfessionalエディションじゃないとリモートデスクトップは使えないです。
写真のはWindows XP Professionalです。
|
|
00102
ミニノートPCでVS2010
登録日:2010/06/01 23:27:18
更新日:2010/06/01 23:34:39
先月終わりごろ、富士通から出ているミニノートパソコン(LOOX U G/90)を購入しました。
購入理由は、今使っている、ミニノートパソコン(初代 LOOX U)の容量がいっぱいになり
Visual Studio 2010(以下VS2010)がインストールできなくなってしまったのが大きな理由です。
スペックは、
CPU:Atom 550 (2GHz)
メモリ:2GB
ストレージ:SSD(64GB)
OS:Windows7 Home
VS2010をインストールしてみての感想は・・・
重い。
とにかく重い。
何が重いかといいますと、エディタで行スクロールするとき、カクカクしています。
いろいろOSでいらないサービスなどを停止しても解決にならず。
視覚テーマをクラシックにしても余りパフォーマンスは上がらず。
・・・
せっかくVS2010を使う目的で購入したのに、使い物にならず、
その後、OSのチューニングはあきらめ、色々VS2010の設定を調べていると。
VS2010のメニューのツールのオプションの環境の全般の箇所に、
視覚効果の設定があり、
チェックボックス「クライアントのパフォーマンスに基づいて視覚効果を自動的に調整する」が
標準でONになっているのをOFFにし、
「可能ならハードウェアのグラフィックス アクセラレータを使用する」のチェックをOFFにして起動したら、結構良くなりました。
重いという方はぜひ、お試しあれです。
ちなみに、なぜこの設定が怪しいかと思った理由は、
VS2010がWPFにより構築されているからです。
WPFってCPUによる描画だけでなく、GPUによる描画を行う仕様をもっているらしい。
AtomパソコンのGPUは、かなりの非力。
VS2010の非力GPUによる描画=遅い・・・
なら、「ハードウェアのグラフィックス アクセラレータ」に頼らないようにしてみよう。
成功!!
ちなみにベンチマークです。
LOOX U G/90(CPU:Atom Z550 2GHz メモリ:2GB OS:Windows7)
初代LOOX U (CPU:A110 800MHz メモリ:1GB OS:XP)
メインPC (CPU:Core2Quad 9450 2.66GHz メモリ:4GB OS:Windows7)
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
続きを見る
|
|
00101
C# 3.0 LINQ Sort
登録日:2010/05/18 7:06:31
更新日:2010/05/18 7:06:31
C# 3.0だとLINQを使ってSQLのように並び替え(ソート処理)を行うことができます。
複雑なロジックを書かずに、複数の値をキーにしてのソートも可能です!
LINQ Sort
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
|
using System;
using System.Collections.Generic;
using System.Linq;
namespace LinqSort {
/// <summary>
/// テスト用VO
/// </summary>
class TestVO {
public string Name {get; set;}
public int Old {get; set;}
public int Tool {get; set;}
}
/// <summary>
/// 実行クラス
/// </summary>
class Program {
static void Main(string[] args) {
var lst = new List<TestVO>();
lst.Add(new TestVO() {Name = "001", Old = 20, Tool = 170});
lst.Add(new TestVO() {Name = "Hoge", Old = 20, Tool = 170});
lst.Add(new TestVO() {Name = "Test", Old = 18, Tool = 175});
lst.Add(new TestVO() {Name = "Hoge", Old = 16, Tool = 170});
lst.Add(new TestVO() {Name = "Test", Old = 25, Tool = 175});
lst.Add(new TestVO() {Name = "Hoge", Old = 20, Tool = 175});
lst.Add(new TestVO() {Name = "999", Old = 20, Tool = 170});
lst.Add(new TestVO() {Name = "9999", Old = 20, Tool = 170});
var query = from l in lst
orderby l.Name, l.Old, l.Tool
select l;
foreach(var p in query) {
Console.WriteLine(p.Name + ", " + p.Old + ", " + p.Tool);
}
}
}
}
|
実行結果
001, 20, 170
999, 20, 170
9999, 20, 170
Hoge, 16, 170
Hoge, 20, 170
Hoge, 20, 175
Test, 18, 175
Test, 25, 175
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
続きを見る
|
|
00100
ぱられる。ふぉー
登録日:2010/05/16 21:35:07
更新日:2010/05/16 21:35:07
Parallel.For実装メモ。
匿名メソッドVerも作ってみました。デリデリしてます。
ラムダ式による実装
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
//参考URL:http://msdn.microsoft.com/ja-jp/library/dd460703.aspx
//<long>:戻り値の型をlongと指定。
//ループ開始:0
//ループ終了:lst.Count
//初期値 :() => 0 //delegate() { return 0;} 初期値を返す匿名メソッド。一時的に定義できるメソッド。
//実際の処理:(j, loop, subtotal) => {} //delegate (int j, ParallelLoopState loop, long subtotal){}
// //ループindex, ループをし続けるかなどの情報, 戻り値を引数とする
// //匿名メソッド。その匿名メソッドの処理でループの処理を定義する。
//ループ処理が終わった後に動く処理:(subtotal) => {}
// //スレッドが複数動いた場合、スレッド毎にループ処理が終わり、
// //実際の処理の戻り値が引数として返ってくるので、それを元に最終的な合計を
// //求めている。CPUのコアが4つの場合だとこの処理は4回走る。(※確信は無いけど)
// //Interlocked.Addによりsumを計算する場合に同時にsum変数にアクセスしないように
// //計算を行っている。
Parallel.For<long>(0, lst.Count, () => 0, (j, loop, subtotal) => {
subtotal += lst[j];
return subtotal;
},
(subtotal) => Interlocked.Add(ref sum, subtotal) //各々のスレッドで求めたsubtotalをローカル変数sumにセットする。
);
|
匿名メソッドによる実装
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
//ラムダ式を匿名メソッドで全て表現。
Parallel.For<long>(
//開始値、終了値
0, lst.Count,
//ループの初期値を返却
delegate() {
return 0;
},
//実処理の実装
delegate(int j, ParallelLoopState loop, long subtotal) {
subtotal += lst[j];
return subtotal;
},
//実処理が終わった後の処理を実装
delegate(long subtotal) {
Interlocked.Add(ref sum, subtotal);
}
);
|
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
続きを見る
|
|
00099
Parallel.For
登録日:2010/05/16 14:52:58
更新日:2010/05/16 14:52:58
C#4.0 続2のParallel.Forについてまとめてみました。
Parallel.Forについて
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
//参考URL:http://msdn.microsoft.com/ja-jp/library/dd460703.aspx
//<long>:戻り値の型をlongと指定。
//ループ開始:0
//ループ終了:lst.Count
//初期値 :() => 0 //delegate() { return 0;} 初期値を返す匿名メソッド。一時的に定義できるメソッド。
//実際の処理:(j, loop, subtotal) => {} //delegate (int j, ParallelLoopState loop, long subtotal){}
// //ループindex, ループをし続けるかなどの情報, 戻り値を引数とする
// //匿名メソッド。その匿名メソッドの処理でループの処理を定義する。
//ループ処理が終わった後に動く処理:(subtotal) => {}
// //スレッドが複数動いた場合、スレッド毎にループ処理が終わり、
// //実際の処理の戻り値が引数として返ってくるので、それを元に最終的な合計を
// //求めている。CPUの論理コアが4つの場合だとこの処理は4回走る。(※確信は無いけど)
// //Interlocked.Addによりsumを計算する場合に同時にsum変数にアクセスしないように
// //計算を行っている。
Parallel.For<long>(0, lst.Count, () => 0, (j, loop, subtotal) => {
subtotal += lst[j];
return subtotal;
},
(subtotal) => Interlocked.Add(ref sum, subtotal) //各々のスレッドで求めたsubtotalをローカル変数sumにセットする。
);
|
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
続きを見る
|
|
00098
C#4.0 続2 Parallelクラス
登録日:2010/05/15 17:12:20
更新日:2010/05/15 17:12:20
Parallel.Forを使って効率のいい実装方法がMSDNに載っていたので、
それを考慮して再度実行してみました。
C#4.0 続 Parallelクラス
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
|
using System;
using System.Collections.Generic;
using System.Windows.Forms;
using System.Threading.Tasks;
using System.Threading;
using System.Linq;
namespace MultithreadTest {
public partial class Form1 : Form {
public Form1() {
InitializeComponent();
}
//いつものfor文
private void button1_Click(object sender, EventArgs e) {
long start = System.Environment.TickCount;
List<int> lst = new List<int>();
for(int i = 0; i < 10000000; i++) {
lst.Add(i);
}
long sum = 0;
//254ミリ秒(foreachループ時)
//foreach(int num in lst) {
// sum += num;
//}
for(int i = 0; i < 10000000; i++) {
sum += lst[i];
}
long stop = System.Environment.TickCount;
label1.Text = (stop - start) + " ミリ秒です。"; //234ミリ秒
}
private void button3_Click(object sender, EventArgs e) {
long start = System.Environment.TickCount;
List<int> lst = new List<int>();
for(int i = 0; i < 10000000; i++) {
lst.Add(i);
}
long sum = 0;
//参考URL:http://msdn.microsoft.com/ja-jp/library/dd460703.aspx
Parallel.For<long>(0, lst.Count, () => 0, (j, loop, subtotal) => {
subtotal += lst[j];
return subtotal;
},
(x) => Interlocked.Add(ref sum, x)
);
long stop = System.Environment.TickCount;
label3.Text = (stop - start) + " ミリ秒です。"; //202ミリ秒
}
}
}
|
実装方法がかなり面倒になっています。
ラムダ式(C# 3.0より搭載)まだ習得していないので、良く分からなかったりしますw
上記のような実装をして、Core2 Quad 9450(4コア 2.66Ghz)OS:Win7 Enterpriseで
234ミリ秒 → 202ミリ秒までパフォーマンスが上がりました。
10000000回の計算で、役30ミリ秒って、10000回程度のループでは恩恵無しですね・・・
別のパソコン(Core2 Duo (2コア 1.2GHz)OS:WinXP Professional)だと周波数も下がり(コア数も減ってますが・・・)
本領発揮してくれるか試してみました。
結果は・・・
普通のfor文:359ミリ秒
Paralle.For:422ミリ秒
遅くなってますねw
しかもParalle.Forは安定していなくて、遅いときですと800ミリ秒とか出したりします。
さらに、シングルCPUだとどうなるかということで、
Core2 Quad 9450(4コア 2.66Ghz)OS:Win7 EnterpriseのXPモードを使って試してみました。
普通のfor文:290ミリ秒
Paralle.For:471ミリ秒
遅いですね・・・
単純な計算では恩恵が受けられないんですかね?
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
続きを見る
|
|
00097
C#4.0 続 Parallelクラス
登録日:2010/05/13 23:56:22
更新日:2010/05/13 23:56:22
Parallelクラスを使って、マルチスレッドで計算させた場合、
変数への排他制御をかけないと、とんでもない結果を出してしまいます・・・。
なので、ロックを使って制御をかけてみると、すべてのCPUのコアで処理は動くのですが、
普通のfor文で計算した方が早い結果に。
C#4.0 続 Parallelクラス
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
|
using System;
using System.Collections.Generic;
using System.Windows.Forms;
using System.Threading.Tasks;
namespace MultithreadTest {
public partial class Form1 : Form {
public Form1() {
InitializeComponent();
}
//いつものfor文
private void button1_Click(object sender, EventArgs e) {
long start = System.Environment.TickCount;
List<int> lst = new List<int>();
for(int i = 0; i < 10000000; i++) {
lst.Add(i);
}
long sum = 0;
foreach(int num in lst) {
sum += num;
}
long stop = System.Environment.TickCount;
label1.Text = (stop - start) + " ミリ秒です。"; //250ミリ秒
}
//Parallelクラスを使用
private void button2_Click(object sender, EventArgs e) {
long start = System.Environment.TickCount;
List<int> lst = new List<int>();
Parallel.For(0, 10000000, i => {
lock(this) {
lst.Add(i);
}
});
long sum = 0;
Parallel.ForEach(lst, num => {
lock(this) {
sum += num;
}
});
long stop = System.Environment.TickCount;
label2.Text = (stop - start) + " ミリ秒です。"; //1800ミリ秒
}
}
}
|
一瞬100%近くまで行きます!(CPU … Core2 Quad 9450)
実際、for文で処理するとCPU使用率5%ぐらいで終わりますが・・・。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
続きを見る
|
|
00096
Internet Explorer の検索ボックスを表示しない
登録日:2010/04/11 20:11:47
更新日:2010/04/11 20:11:47
コマンドプロンプトから、
gpedit.msc
を入力し以下のように設定するとIEの検索ボックスを非表示にできるみたいです。
普段からGoogleツールバー使っているので、必要無いと思ってました。
Vistaや7のファイル検索時の検索ボックスはありがたいですがね。
|
|
00095
2010年度になりました
登録日:2010/04/03 11:42:18
更新日:2010/04/03 11:42:18
ここ最近残業続きで、ホームページが更新できません・・・
そんな残業が多い中、Visual Studio 2010(以下VS2010)の購入に向けてMSDNの会員になりました。
これで、VS2010の開発終了と同時に製品版が利用できます。(パッケージ版だと1ヶ月ぐらい後に
発売するはずなので)
MSDNのメリットとしては、
・いろんなソフト(マイクロソフト限定)が手に入る。(購入時のエディションにもよりますが)
・いろんなソフトとしては、昔発売した物から最新の物まで手に入る。
今回、私が購入したのは、VS2008 Pro with MSDN Subscription Professional なので、
OSとVisualStudio(以下VS)がとりあえず一通り手に入ります。
(マイクロソフトJavaVMが入っているソフトは
ダウンロードできないみたいです。 Win2000も駄目みたいです。)
MSDN Subscription Professional だとOFFICEは手に入りません。
(Visioはダウンロードできるみたいですが。※関連するVSを先に入れておく必要があります。)
それと、
Windows7 Enterprizeの評価版をMSDNより取得したライセンスキーで再インストールをすることなく
製品版にする事もできました。
去年の9月からずっと評価版を使っていたので、やっと製品版に移行できました。
VS6の箱は持っているのですが、中身が無いので、今回の購入によってVS6の中のVB6を
手に入れる事ができました。(高校時代のVBプログラムが動かせる〜♪
月(黄色い丸)に命と表示されたら、マウスをできるだけ早くクリックするというだけのゲームです。
久々に動かしてみて気づいた事は、このプログラム、×ボタンで終了するとタスク上に残っていて
プログラムが終了していないということです。
Form2プログラムの一部
1
2
3
4
5
6
7
|
Private Sub Label3_Click()
Unload Form1
Form1.Show '←命Tフォーム
Form2.Hide 'タイトル画面を非表示。
End Sub
|
Form2生きてますねw
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
続きを見る
|