ホーム > Tips

Tipsのアーカイブ

Stopwatchって普通ラップタイム計測できるよね

でも、.NET FrameworkのSystem.Diagnostics.Stopwatchはちょっと不便。

  • ラップタイムが計測できない。
  • ElapsedMillisecondsプロパティがlong型で、精度が悪い。
  • 精度よく計測するために毎回ElapsedTicksとStopwatch.Frequencyを使ってごにょごにょしないといけない。

というわけで、最初にNewしてStartして、プログラム上のいろんな位置でLapTimeを測って、後で全部をミリ秒単位のdouble配列で取り出すサンプル。
実行速度検証にどうぞ。

public class k2kLapStopwatch : Stopwatch
{
    private long[] LapTicks;
    private int LapCounter;
 
    public k2kLapStopwatch(int MaxLapCount)
    {
        LapTicks = new long[MaxLapCount];
        LapCounter = 0;
    }
 
    public void StoreLap()
    {
        LapTicks[LapCounter] = base.ElapsedTicks;
        LapCounter++;
    }
 
    public double[] GetLapElapsedMilliseconds()
    {
        int i;
        double[] ret = new double[LapCounter];
 
        ret[0] = TicksToMilliseconds(LapTicks[0]);
        for (i = 1; i < LapCounter; i++)
        {
            ret[i] = TicksToMilliseconds(LapTicks[i] - LapTicks[i - 1]);
        }
        return ret;
    }
    private double TicksToMilliseconds(long Ticks)
    {
        return (double)Ticks / Stopwatch.Frequency * 1000.0;
    }
}

目的上速さが重要なので、System.Collections.Generic.Listとかは使わないし、オーバーフローしても無視ってことで。
早速↑が正しいか検証するために、List、容量指定のList、ふつうの配列の速度測ってみると、やっぱり配列が容量未指定のListの2倍ぐらい速い。

細かいことだとLapTicksはpublicでもいいかも。あとStartNewをオーバーライドしたりして使おうかな。。

private void button1_Click(object sender, EventArgs e)
{
    const int n = 1000000;
    int i;
 
    k2kLapStopwatch sw = new k2kLapStopwatch(5);
 
    List<long> list1 = new List<long>();
    List<long> list2 = new List<long>(n);
    long[] array1 = new long[n];
 
    sw.Start();
    for (i = 0; i < n; i++) list1.Add(i);
    sw.StoreLap();
    for (i = 0; i < n; i++) list2.Add(i);
    sw.StoreLap();
    for (i = 0; i < n; i++) array1[i] = i;
    sw.StoreLap();
    for (i = 0; i < n; i++) ;
    sw.StoreLap();
 
    sw.Stop();
 
    double[] ret = sw.GetLapElapsedMilliseconds();
    Console.WriteLine(string.Join(",", Array.ConvertAll<double, string>(ret, d => d.ToString())));
}

マルチドメイン + Google Apps用レンタルサーバー比較

技術的に難しい条件をつけてみて、ドメインレジストラとレンタルサーバーを色々巡ってみた。

  1. あるサブドメインのみを割り当てて、マルチドメインが可能。
  2. 他のサブドメインをGoogle Appsなど、別サーバーに割り当て可能。
  3. それなりに高速、安定。
  4. 月500円程度。

マルチドメイン対応の鯖には、専用のネームサーバーを使うことを強制されることが多い。
(ハッスルなど。格安で良いんだけど。。)
で、専用のNSにはCNAMEレコードを書けないことが多いので、
ドメイン屋さんのNSでCNAME書いてサブドメインだけ飛ばしたい。
それを複数ドメインでやりたい。てことで1.が必要。

1.と2.はほとんど一緒と言っても良いかも。GoogleにCNAMEできればGoogle Appsが使える。
ただし、例えばハッスルの専用NSはMXはスルーしてくれるらしいので、GMailだけGoogle Appsで使いたい場合はハッスルでも可能らしい。

3と4は微妙なんだけど、ざっと評判を見るとさくらインターネットかなって気がする。あんまりちゃんと検討して無いけど。

とりあえず、そこそこの価格で1.2.が可能なさくらインターネットにロリポップから乗換えてみた。

ロリポップはマルチドメイン不可。チカッパはマルチドメインに追加料金あり。
ハッスルは安くて良いんだけど専用NS。
XREA系はあんまり見てないけどなんとなく。

1 2

ホーム > Tips

カレンダー
« 2018 年 10月 »
S M T W T F S
  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      
最近の反応
メタ情報

ページの上部に戻る