No Such Blog or Diary

«Prev || 1 | 2 | 3 |...| 957 | 958 | 959 |...| 1247 | 1248 | 1249 || Next»

ようやく64bitでも頭よく最適化してくれるようになった

const だからコピーしまくっても最適化時にひとつになるだろう、とか思って手を抜いた実装になっていた部分をコピーが無くなる様に改善した.そしたら無駄なことしない最適化されたコードを吐いてくれるようになった.

……あれ? 手で最適化しただけの様に思えてきた…… ま,いっか.

const 万歳

色々付けまくったらコンパイラががんばって最適化してくれるようになった! でもなぜか32bitバイナリへのコンパイル時にしか頭良くない.同じコンパイラなのに(?)64bitへのコンパイルだと頭悪い子になってしまう… もう少し明示的に無駄を省くしかないか.

C++で忘れがちなこと

__LINE__ で行番号が取れる.これ使えば行ごとに一意な静的定数を作れる.便利かもしれない.

typeid と demangle による型情報の出力.Expression Templates で頑張っている時には必須.操作対象が型なので型を出力できないと色々困る.

#include <iostream>
#include <typeinfo>
#include <cxxabi.h>
 
template<typename T>
void showtype() {
  int status;
  std::cout << abi::__cxa_demangle(typeid(T).name(),0,0,&status) << std::endl;
}
template<typename T>
void showtypeof(const T&) {
  showtype<T>();
}

std::inner_product は色々計算できる.

emacs の tramp で multi-hop に sshx を

デフォルトだと multi のときに sshx が使えない.このせいで接続がうまくいかなかったので tramp-multi-connection-function-alist に sshx を追加するように .emacs に以下を追記.

(require 'tramp)
(add-to-list
 'tramp-multi-connection-function-alist
 '("sshx" tramp-multi-connect-rlogin "ssh -t -t %h -l %u /bin/sh%n"))

これでようやく

/multi:sshx:user1@host1:sshx:user2@host1:~/path/to/file

が通るようになった&ファイル編集が出きるようになった.

ちなみに,新しいtrampだとmultiがサポートされておらず,tramp-default-proxies-alist に (HOST USER PROXY) というエントリを追加する.こいつは,USER@HOST にあるファイルにアクセスするには PROXY を踏み台にしろということを意味する.なので,上の例だと

(add-to-list 'tramp-default-proxies-alist
             '("host1" "user2" "/sshx:user1@host1:"))

とすりゃいい.多分.

ほっともっとのおにぎりサンド北海道コロッケ(180円)

今日発売とかいうので食べてみた.

感想:コロッケを普通に2個食べるほうが幸せ.

やっぱコロッケを炭水化物で包むってのは負けなんじゃないかと.コロッケもメインは炭水化物だし.

Expression Templatesを説明するには

「パーサはC++自身のパーサで,semantic value が式の抽象構文木で,そいつが template の型変数にエンコードされていて,抽象構文木を構築する sematic action を型上の演算で実現したんだよ」と言えばいいのかな.あとは解析した式の外側で構文木に従った計算を展開すると.

«Prev || 1 | 2 | 3 |...| 957 | 958 | 959 |...| 1247 | 1248 | 1249 || Next»
Search
Feeds

Page Top