約 5,664,501 件
https://w.atwiki.jp/warband/pages/683.html
fac_no_faction|No Faction fac_commoners|Commoners fac_outlaws|Outlaws fac_neutral|Neutral fac_innocents|Innocents fac_merchants|Merchants fac_culture_1|Vale fac_culture_2|Dragonstone fac_culture_3|Norvoshi fac_culture_4|Northern fac_culture_5|Riverlander fac_culture_6|Reach fac_culture_7|Braavosi fac_culture_8|Iron Islander fac_culture_9|Dornish fac_culture_10|Watchmen fac_culture_11|Free Folk fac_culture_12|Dothraki fac_culture_13|Pentoshi fac_culture_14|Targaryen fac_culture_14_1|Targaryen fac_culture_15|Myrish fac_culture_16|Tyroshi fac_culture_17|Lorathi fac_culture_18|Westerlander fac_culture_19|Lyseni fac_culture_20|Qohorik fac_culture_21|Volantene fac_culture_22|Stormlander fac_wild_animals|Wild Animals fac_player_faction|Player Faction fac_player_supporters_faction|Player's Supporters fac_kingdom_1|The Vale fac_kingdom_2|Dragonstone fac_kingdom_4|The North fac_kingdom_5|The Riverlands fac_kingdom_6|The Reach fac_kingdom_8|The Iron Islands fac_kingdom_9|Dorne fac_kingdom_18|The Westerlands fac_kingdom_22|The Stormlands fac_kingdom_14|House Targaryen fac_kingdom_14_1|House Targaryen fac_kingdom_11|Free Folk fac_kingdom_10|Night's Watch fac_kingdom_12|Dothraki Khalasar fac_kingdom_13|Pentos fac_kingdom_3|Norvos fac_kingdom_15|Myr fac_kingdom_16|Tyrosh fac_kingdom_17|Lorath fac_kingdom_19|Lys fac_kingdom_20|Qohor fac_kingdom_21|Volantis fac_kingdom_7|Braavos fac_astapor|Astapor fac_hill_tribes|Hill Tribes fac_windblown|The Windblown fac_golden_company|The Golden Company fac_second_sons|The Second Sons fac_stormcrows|The Stormcrows fac_gallant_men|The Gallant Men fac_iron_legionaries|The Iron Legions fac_old_gods_of_the_forest|Old Gods of the Forest fac_rhllor|R'hllor fac_the_faith_of_the_seven|Faith of the Seven fac_drowned_gods|Drowned God fac_manhunters|The Brotherhood fac_deserters|Deserters fac_ironborn_pirates|Ironborn Pirates fac_forest_bandits|Forest Bandits fac_dothraki_raiders|Dothraki Raiders fac_northern_clansmen|Northern Clansmen fac_whitewalkers|White Walkers fac_apoyoplayer|Neutral fac_ccoop_all_stars|All Stars
https://w.atwiki.jp/sinapusu2002/pages/238.html
http //odz.sakura.ne.jp/projecteuler/index.php?cmd=read page=Problem%20127 Problem 127 「abc-hit」 † abc-hitに関する問題。 計算時間1秒の解 gcd(a,b)=1,gcd(a,c)=1,gcd(b,c)=1 より rad(abc)=rad(a)rad(b)rad(c)<c となればrad(c)にrad(a)が小さいaから掛けてc,aが確定したのでbを算出しこれが条件を満たすか調べればOK。 #include stdio.h #include string.h #include vector #include algorithm int gcd ( int a, int b ) { int c; while ( a != 0 ) { c = a; a = b%a; b = c; } return b; } struct E{ int n; int rad; bool operator (const E e1)const{ if(rad!=e1.rad)return rad e1.rad; return n e1.n; } }; const int LIMIT=120000; bool isP[LIMIT]; int rad[LIMIT]; int main(){ memset(isP,true,sizeof(isP)); isP[0]=isP[1]=false; for(int i=2;i*i =LIMIT;i++){ if(isP[i]==false)continue; for(int j=i*2;j LIMIT;j+=i){ isP[j]=false; } } rad[0]=0; for(int i=1;i LIMIT;i++){ rad[i]=1; } for(int i=2;i LIMIT;i++){ if(isP[i]==false)continue; for(int j=i;j LIMIT;j+=i){ rad[j]*=i; } } std vector E vec; for(int i=1;i LIMIT;i++){ E e1; e1.n=i; e1.rad=rad[i]; vec.push_back(e1); } std sort(vec.begin(),vec.end()); int ans=0; for(int c=3;c LIMIT;c++){ __int64 c1=rad[c]; if(c%10000==0)printf("%d/%d\n",c,LIMIT); for(int i=0;i vec.size();i++){ __int64 c2=c1*vec[i].rad; if(c2 =c)break; int a=vec[i].n; if(c-a =a)continue; int b=c-a; __int64 c3=c2*rad[b]; if(c3 =c)continue; if(gcd(c,a)!=1)continue; if(gcd(c,b)!=1)continue; if(gcd(a,b)!=1)continue; ans+=c; } } printf("ans=%d\n",ans); }
https://w.atwiki.jp/mobafa/pages/293.html
偽物 ロス+1 ID 127 種類 知2 入手 第14話 攻撃 21/165 技術 19/172 知識 135/475 合計 175/812 マテリア 31 継承 1 熟練度 15
https://w.atwiki.jp/kongregate/pages/17.html
Action games on Kongregateに載っているActionの一覧です。 ゲーム情報はまだまだ不足しているので、どんどん追加してくれると嬉しいです。 GAME名 BADGE数 関連QUEST 合計points アクセス数 Bubble Tanks 2 3 Beginner Best of 2008 35 - Burrito Bison 4 40 - City Siege 2 3 50 - Dead Metal 3 50 - Effing Worms 1 5 - Ether War 2 20 - Epic Coaster 3 25 - Epic Combo! 2 Epic 20 - Kamikaze Pigs 4 65 - Legend of the Void 2 4 80 - Man in Gap 1 15 - Moby Dick - The Video Game 4 65 - Nano Kingdoms 2 20 - Pirateers 3 35 - Pwong 2 3 50 - Super Adventure Pals 3 35 - Versus Umbra 3 35 - Zombotron 2 Time Machine 2 20 -
https://w.atwiki.jp/0x0b/pages/59.html
Number 関数として呼ばれる Number コンストラクタ コンストラクタではなく関数として呼出される Number は、型変換を行う。 Number ( [ value ] ) value が供給されれば ToNumber(value) により算出した (Number オブジェクトではなく) 数値を返し、供給されなければ +0 を返す。 Number コンストラクタ new 式の一部として呼出される Number はコンストラクタである 新規に生成したオブジェクトを初期化する。 new Number ( [ value ] ) 新規に構築されたオブジェクトの Prototype プロパティは、 Number.prototypeの初期値である、オリジナルの Number プロトタイプオブジェクトに設定される。 新規に構築されたオブジェクトの Class プロパティは、 "Number" に設定される。 新規に構築されたオブジェクトの Value プロパティは、 value が供給されるならば ToNumber(value) に、そうでなければ +0 に設定される。 Number コンストラクタのプロパティ Number コンストラクタの内部 Prototype プロパティの値は、 Function プロトタイプオブジェクト 内部プロパティと length プロパティ (値は 1) の他に、 Number コンストラクタは次のプロパティを持つ Number.prototype Number.prototype の初期値は Number プロトタイプオブジェクト このプロパティは、属性 { DontEnum, DontDelete, ReadOnly } である。 Number.MAX_VALUE Number.MAX_VALUE の値は、Number 型の正の有限数の最大値であり、おおよそ 1.7976931348623157 × 10^308 である、 このプロパティは、属性{ DontEnum, DontDelete, ReadOnly } を持つ。 Number.MIN_VALUE Number.MIN_VALUE の値は Number 型の正の最小値であり、おおよそ 5 × 10^-324. このプロパティは、属性 { DontEnum, DontDelete, ReadOnly } である。 Number.NaN Number.NaN の値は NaN である。 このプロパティは、属性 { DontEnum, DontDelete, ReadOnly } である。 Number.NEGATIVE_INFINITY Number.NEGATIVE_INFINITY の値は、 -∞ である。 このプロパティは、属性 { DontEnum, DontDelete, ReadOnly } である。 Number.POSITIVE_INFINITY Number.POSITIVE_INFINITY の値は、 +∞ である。 このプロパティは、属性 { DontEnum, DontDelete, ReadOnly } である。 Number プロトタイプオブジェクトのプロパティ Number プロトタイプオブジェクト は、それ自身 値が +0 の Number オブジェクト (Class が "Number") である。 Number プロトタイプオブジェクトの内部 Prototype プロパティの値は、 Object プロトタイプオブジェクト 以降、 Number プロトタイプオブジェクトのプロパティである関数の説明において、フレーズ "この Number オブジェクト" は、関数の呼出しにとっての this 値であるオブジェクトを参照する; this 値がオブジェクトではなく、内部 Class プロパティの値が "Number" ならば、例外 TypeError が投げられる。 また、フレーズ "この数値" は、この Number オブジェクトであらわされる数値、つまり、この Number object の内部 Value プロパティの値を参照する。 Number.prototype.constructor Number.prototype.constructor の初期値は、組込み Number コンストラクタである。 Number.prototype.toString (radix) radix が数 10 または undefined ならば、この数値は引数として ToString 演算子に与えられる; 結果の文字列値が返される。 radix が 2 から 36 の整数で、 10 でないならば、結果は文字列で、実装依存の選択となる。 toString 関数は汎用的ではない; this 値が Number オブジェクトでなければ、例外 TypeError を投げる。それゆえ、他の種類のオブジェクトにメソッドとして転用できない Number.prototype.toLocaleString() ホスト環境の現在のロケールの慣習に沿って整形される Number の値を表す文字列値を生成する。この関数は実装依存で、 toString と同じものを返すことを許可されているが推奨もされない。 NOTE この関数の第一パラメータは、この標準の将来のバージョンで使用される可能性がある; 実装はこのパラメータを他の用途に使用しないことを推奨する。 Number.prototype.valueOf ( ) この数値を返す。 valueOf 関数は汎用的ではない; this 値が Number オブジェクトでなければ、例外 TypeError を投げる。それゆえ、他の種類のオブジェクトにメソッドとして転用できない。 Number.prototype.toFixed (fractionDigits) 小数点の後の fractionDigits 個の数字にって数を固定点表記 (fixed-point notation) する文字列を返す。 fractionDigits が undefined ならば、 0 が仮定される。 具体的には、次のステップを実行する toFixed メソッドの length プロパティは 1 である。 toFixed メソッドが、 2 個以上の引数で呼出されるならば、振る舞いは未定義である 実装は、 0 未満や 20 より大きい fractionDigits の値に対する toFixed の振る舞いの拡張を許可される。この場合、 toFixed はそのような値に対し RangeError を投げる必要はない。 NOTE toFixed の出力は、値によっては toString より正確でよく、それは toString が隣接した数値から数を区別するのに十分な桁数を出力するだけだからである。例えば、 (1000000000000000128).toFixed(0) が "1000000000000000128" を返す一方で、 (1000000000000000128).toString() は "1000000000000000100" を返す。 Number.prototype.toExponential (fractionDigits) 1 個の数字、小数点、 fractionDigits 個の数字によって数を指数表記する文字列を返す。 fractionDigits が undefined ならば、数を一意に特定するのに必要とするのと同じ桁数を含む (この場合、数が指数表記で常に出力される点を除き ToString に似ている)。 具体的には、次のステップを実行する toExponential メソッドの length プロパティは 1 である。 toExponential メソッドが 2 個以上の引数で呼出されるならば、その振る舞いは未定義である (セクション 15 参照)。 実装は、 fractionDigits が 0 より小さい場合、また 20 より大きい場合の toExponential の振る舞いの拡張を許可される。この場合 toExponential はその値に例外 RangeError を投げる必要はない。 NOTE 上記の規則の要求よりもより精密な取り決めを提供する実装については、ステップ 19 の次の代替バージョンをガイドラインとして用いることを推奨する e, n, f を、 f ≥ 0, 10f ≤ n 10f+1, n × 10e-f の数値が x, かつ, 可能な限り小さい f であるような整数とする。複数の n が存在可能であれば、 n × 10e-f が x の値に最も近いような n の値を選択する。可能な n の値が 2 個あれば、偶数である方を選択する。 Number.prototype.toPrecision (precision) 1 個の数字、小数点、 precision-1 個の数字による指数表記、または precision 桁の数字による固定点表記の一方であらわされる数を含む文字列を返す。 precision が undefined ならば、代わりに ToStringを呼出す。具体的には、次のステップを実行する toPrecision メソッドの length プロパティは 1 である。 toPrecision メソッドが 2 個以上の引数で呼出されるならば、その振る舞いは未定義である 実装は、 precision の値が 0 より小さい場合、また 21 より大きい場合の toPrecision の振る舞いの拡張を許可される。この場合 toPrecision はその値に例外 RangeError を投げる必要はない。 Number インスタンスのプロパティ Number インスタンスは、Number プロトタイプオブジェクトから継承するプロパティの上に特にプロパティを持たない。
https://w.atwiki.jp/usb_audio/pages/21.html
原文:Audio Data Formats 1.0(PDF) USB Device Class Definition for Audio Data Formats Release 1.0 March 18, 1998 6 1 Introduction The intention of this document is to describe in detail all the Audio Data Formats that are supported by the Audio Device Class. This document is considered an integral part of the Audio Device Class Specification, although subsequent revisions of this document are independent of the revision evolution of the main USB Audio Specification. This is to easily accommodate the addition of new Audio Data Formats without impeding the core USB Audio Specification. 1.1 Related Documents · Universal Serial Bus Specification, 1.0 final draft revision (also referred to as the USB Specification). In particular, see Chapter 9, “USB Device Framework.” · Universal Serial Bus Device Class Definition for Audio Data Formats (referred to in this document as USB Audio Data Formats). · Universal Serial Bus Device Class Definition for Terminal Types (referred to in this document as USB Audio Terminal Types). · ANSI S1.11-1986 standard. · MPEG-1 standard ISO/IEC 111172-3 1993. · MPEG-2 standard ISO/IEC 13818-3 Feb. 20, 1997. · Digital Audio Compression Standard (AC-3), ATSC A/52 Dec. 20, 1995. (available from http //www.atsc.org) · ANSI/IEEE-754 floating-point standard. · ISO/IEC 958 International Standard Digital Audio Interface and Annexes. · ISO/IEC 1937 standard. · ITU G.711 standard. 1.2 Terms and Abbreviations This section defines terms used throughout this document. For additional terms that pertain to the Universal Serial Bus, see Chapter 2, “Terms and Abbreviations,” in the USB Specification. Audio Frame A collection of audio subframes, each containing a PCM audio sample of a different physical audio channel, taken at the same moment in time. Audio Stream A concatenation of a potentially very large number of audio frames ordered according to ascending time. Audio Subframe Holds a single PCM audio sample. DVD Acronym for Digital Versatile Disc. Encoded Audio Bitstream A concatenation of a potentially very large number of encoded audio frames, ordered according to ascending time. Encoded Audio Frame A sequence of bits that contains an encoded representation of one or more physical audio channels. MPEG Acronym for Moving Pictures Expert Group. PCM Acronym for Pulse Coded Modulation. Transfer Delimiter A unique token that indicates an interruption in an isochronous data packet stream. Can be either a zerolength data packet or the absence of an isochronous transfer in a certain USB frame. USB Device Class Definition for Audio Data Formats Release 1.0 March 18, 1998 7 blank page USB Device Class Definition for Audio Data Formats Release 1.0 March 18, 1998 8 2 Audio Data Formats Audio Data Formats can be divided in three main groups according to type. The first group, Type I, deals with audio data streams that are constructed on a sample-by-sample basis. Each audio sample is represented by a single independent symbol and the data stream is built up by concatenating those symbols. Different compression schemes may be used to transform the audio samples into symbols. If multiple physical audio channels are formatted into a single audio channel cluster, then samples at time x of subsequent channels are transmitted interleaved, according to the cluster channel ordering as described in the main USB Audio Specification, followed by samples at time x+1, interleaved in the same fashion and so on. The notion of physical channels is explicitly preserved during transmission. A typical example of Type I formats is the standard PCM audio data. The second group, Type II, deals with those formats that do not preserve the notion of physical channels during the transmission. Typically, all non-PCM encoded audio data streams belong to this group. A number of audio samples, often originating from multiple physical channels, are encoded into a number of bits in such a way that, after transmission, the original audio samples can be reconstructed to a certain degree of accuracy. The number of bits used for transmission is typically one or more orders of magnitude smaller than the number of bits needed to represent the original PCM audio samples, effectively realizing a considerable bandwidth reduction during transmission. The third group, Type III, contains special formats that do not fit in both previous groups. In fact, they mix characteristics of Type I and Type II groups to transmit audio data streams. One or more non-PCM encoded audio data streams are packed into “pseudo-stereo samples” and transmitted as if they were real stereo PCM audio samples. The sampling frequency of these pseudo samples matches the sampling frequency of the original PCM audio data streams. Therefore, clock recovery at the receiving end is easier than it is in the case of Type II formats. The drawback is that unless multiple non-PCM encoded streams are packed into one pseudo stereo stream, more bandwidth than necessary is consumed. Section A.1, “Audio Data Format Codes” summarizes the Audio Data Formats that are currently supported in the Audio Device Class. The following sections explain those formats in more detail. 2.1 Transfer Delimiter Isochronous data streams are continuous in nature, although the actual number of bytes sent per packet may vary throughout the lifetime of the stream (for rate adaptation purposes for instance). To indicate a temporary stop in the isochronous data stream without closing the pipe (and thus relinquishing the USB bandwidth), an in-band Transfer Delimiter needs to be defined. This specification considers two situations to be a Transfer Delimiter. The first is a zero-length data packet and the second is the absence of an isochronous transfer in a particular USB frame. Both situations are considered equivalent and the audio function is expected to behave the same. However, the second type consumes less isochronous USB bandwidth (i.e. zero bandwidth). In both cases, this specification considers a Transfer Delimiter to be an entity that can be sent over the USB. 2.2 Type I Formats The following sections describe the Audio Data Formats that belong to Type I. A number of terms and their definition are presented. 2.2.1 USB Packets Audio data streams that are inherently continuous must be packetized when sent over the USB. The quality of the packetizing algorithm directly influences the amount of effort needed to reconstruct a reliable sample clock at the receiving side. The goal must be to keep the instantaneous number of samples USB Device Class Definition for Audio Data Formats Release 1.0 March 18, 1998 9 per frame (ni) as close as possible to the average number of samples per frame, (nav). The average nav should be calculated as a sliding average over a period of 256 frames. If the sampling rate is a constant, the allowable variation on ni is limited to one sample, that is, Dni = 1. This implies that all packets must either contain INT (nav ) (small packet) or INT (nav ) + 1 (large packet) samples. For all i ni = INT (nav) | INT (nav) + 1 Note In the case where nav = INT (nav ), ni may vary between INT (nav) - 1 (small packet), INT (nav) (medium packet) and INT (nav) + 1 (large packet). To limit the needed buffer depths to acceptable limits, this specification limits the cumulative difference between nav and ni to ±1.5 samples. If the sampling rate can be varied (to implement pitch control), the allowable pitch shift is 1kHz/ms. That is, the allowable variation on ni is limited to one sample per frame. For all i ni+1 = ni ± 1 Pitch control is restricted to adaptive endpoints only. AudioStreaming interfaces that support pitch control on their isochronous endpoint are required to report this in the class-specific endpoint descriptor. In addition, a Set/Get Pitch Control request is required to enable or disable the pitch control functionality. 2.2.2 Audio Subframe The basic structure used to represent audio data is the audio subframe. An audio subframe holds a single audio sample. An audio subframe always contains an integer number of bytes. This specification limits the possible audio subframe sizes (bSubframeSize) to 1, 2, 3 or 4 bytes per audio subframe. An audio sample is represented using a number of bits (bBitResolution) less than or equal to the total number of bits available in the audio subframe, i.e. bBitResolution £ bSubframeSize*8. AudioStreaming endpoints must be constructed in such a way that a valid transfer can take place as long as the reported audio subframe size (bSubframeSize) is respected during transmission. If the reported bits per sample (bBitResolution) do not correspond with the number of significant bits actually used during transfer, the device will either discard trailing significant bits ([actual_bits_per_sample] bBitResolution) or interpret trailing zeros as significant bits ([actual_bits_per_sample] bBitResolution). 2.2.3 Audio Frame An audio frame consists of a collection of audio subframes, each containing an audio sample of a different physical audio channel, taken at the same moment in time. The number of audio subframes in an audio frame equals the number of logical audio channels in the audio channel cluster. The ordering of the audio subframes in the audio frame obeys the rules set forth in the USB Audio Specification. All audio subframes must have the same audio subframe size. 2.2.4 Audio Streams An audio stream is a concatenation of a potentially very large number of audio frames, ordered according to ascending time. Streams are packetized when transported over USB whereby USB packets can only contain an integer number of audio frames. Each packet always starts with the same channel, and the channel order is respected throughout the entire transmission. If, for any reason, there are no audio frames available to construct a USB packet, a Transfer Delimiter must be sent instead. USB Device Class Definition for Audio Data Formats Release 1.0 March 18, 1998 10 2.2.5 Type I Format Type Descriptor The Type I format type descriptor starts with the usual three fields bLength, bDescriptorType, and bDescriptorSubtype. The bFormatType field indicates this is a Type I descriptor. The bNrChannels field contains the number of physical channels in the audio data stream. The bSubframeSize field indicates how many bytes are used to transport an audio subframe. The bBitResolution field indicates how many bits of the total number of available bits in the audio subframe are truly used by the audio function to convey audio information. The sampling frequency capabilities of the isochronous data endpoint of the AudioStreaming Interface are reported as well. Depending on the bSamFreqType field, the length of the descriptor varies and the interpretation of the trailing fields differs. Sampling frequencies occupy three bytes and are expressed in Hz to support over-sampled, reduced bit-resolution systems (the range is from 0 to 16,777,215 Hz). Table 2-1 Type I Format Type Descriptor Offset Field Size Value Descriptio 0 bLength 1 Number Size of this descriptor, in bytes 8+(ns*3) 1 bDescriptorType 1 Constant CS_INTERFACE descriptor type. 2 bDescriptorSubtype 1 Constant FORMAT_TYPE descriptor subtype. 3 bFormatType 1 Constant FORMAT_TYPE_I. Constant identifying the Format Type the AudioStreaming interface is using. 4 bNrChannels 1 Number Indicates the number of physical channels in the audio data stream. 5 bSubframeSize 1 Number The number of bytes occupied by one audio subframe. Can be 1, 2, 3 or 4. 6 bBitResolution 1 Number The number of effectively used bits from the available bits in an audio subframe. 7 bSamFreqType 1 Number Indicates how the sampling frequency can be programmed 0 Continuous sampling frequency1..255 The number of discrete sampling frequencies supported by the isochronous data endpoint of the AudioStreaming interface (ns) 8... See sampling frequency tables, below. Depending on the value in the bSamFreqType field, the layout of the next part of the descriptor is as shown in the following tables. Table 2-2 Continuous Sampling Frequency Offset Field Size Value Descriptio 1 - 6 - 11 - 16 - 21 - 26 - 31 ここを編集
https://w.atwiki.jp/wiki6_takt/pages/39.html
ActiveRecord パフォーマンス最適化 Rails という非正統的パーシスタンス・フレームワークで必要となりそうな、重要な最適化のいくつかについて解説します。 基本を学ぶ スキーマに裏付けられたモデルを生成するのは簡単で、script/generate model model_name を使ってちょっとしたコードを生成するだけです。ご存じの通り、このコマンドは、モデルやマイグレーション、ユニット・テスト、さらにはデフォルトのフィクスチャーまで生成します。マイグレーションのいくつかのデータ列にデータを入力し、ちょっとしたテスト・データを入力し、テストをいくつか作成し、検証をいくつか追加し、そしてそれで終わり、というのは非常に魅力的です。しかし、注意しなければなりません。データベース全体の設計も考慮する必要があるのです。次のことを念頭に置いてください。 Rails によってデータベースの基本的なパフォーマンスの問題から解放されるわけではありません。データベースが適切に動作するためには、(通常は索引の形で) 情報が必要です。 Rails によってデータの完全性の問題から解放されるわけではありません。大部分の Rails 開発者はデータベースに制約を持たせることを嫌いますが、NULL 可能列などを考慮する必要があります。 Rails は多くの要素に対して、便利なデフォルトを持っています。しかし場合によるとテキスト・フィールドの長さのようなデフォルト属性は、大部分の現実的なアプリケーションには大きすぎます。 Rails は効率的にデータベースを設計するように強制はしません。 少しずつ ActiveRecord に深入りする前に、基礎が強固なことを確認し、また索引構造が適切なことを確認する必要があります。もし対象のテーブルが大きくなる可能性があり、id 以外の列を検索するのであれば、そしてもし索引が役立つなら (詳細については皆さんのデータベース・マネージャーのドキュメンテーションを見てください。データベースによって索引の使い方は異なります)、必ず索引を作成します。索引を作成するために SQL に入り込む必要はありません。単純にマイグレーションを使えばよいのです。create_table マイグレーションを使えば容易に索引を作成でき、あるいは索引を作成してくれる追加のマイグレーションも容易に作成することができます。私達が ChangingThePresent.org (「参考文献」を参照) で使っている、索引を作成するマイグレーションの一例を以下に示します。 リスト 1. マイグレーションの中で索引を作成する class AddIndexesToUsers ActiveRecord Migration def self.up add_index members, login add_index members, email add_index members, first_name add_index members, last_name end def self.down remove_index members, login remove_index members, email remove_index members, first_name remove_index members, last_name end end ActiveRecord はid の索引を処理してくれるので、私はさまざまな検索に使用する索引を明示的に追加しています。索引を追加する理由は、このテーブルが大きく、稀にしか更新されず、そして頻繁に検索されるためです。私達は対象のクエリーでの問題を測定できるまで待ってからアクションを取ることがよくあります。こうすることで、後からデータベース・エンジンを非難しなくてもすみます。しかしユーザー・テーブルの場合は、すぐにテーブルが何百万人ものユーザーにまで大きくなり、頻繁に検索される列を索引付けしない限り非効率になります。 マイグレーションに関連して、他にも 2 つの一般的な問題があります。ヌルであってはならないストリングと列がある場合には、マイグレーションが適切にコーディングされていることを確認します。大部分の DBA (データベース管理者) は、Rails はヌル列に対して不適切なデフォルトを持っていると思うかもしれません。つまりデフォルトで列がヌルになりうるのです。ヌルになりえない列を作りたい場合には、明示的に null = false というパラメーターを追加する必要があります。また、ストリング列がある場合には、コードが適切な制限を設定していることを確認します。デフォルトで、Rails のマイグレーションは string 列を varchar(255) としてエンコードします。通常は、これは大きすぎます。データベース構造がアプリケーションを反映したものになるよう、最大限の努力をする必要があります。無制限のログインにするのではなく、もしアプリケーションがログインを 10 文字に制限しているのであれば、それに合わせて適切にデータベースをコーディングする必要があります (リスト 2)。 リスト 2. 制限と非 NULL 可能列を持つマイグレーションのコーディング t.column login, string, limit = 10, null = false また、デフォルト値や、その他安全に提供できる他の情報も考慮する必要があります。最初に少しばかり手間をかけることで、後でデータの完全性の問題を追跡するための大きな時間を節約できます。データベースの基本を検討する際には、どのページが静的でキャッシュしやすいかも考えます。クエリーの最適化とページのキャッシングのどちらかを選ぶとしたら、ページをキャッシングした方がずっと大きな効果がありますが、複雑になることは我慢しなければなりません。ページやフラグメントが、州のリストや FAQ (frequently asked question) などのように、完全に静的な場合には、キャッシングは確実に効果があります。しかし他の場合では、複雑になるのを避けてデータベースのパフォーマンスを追求した方がよいかもしれません。ChangingThePresent では、問題と状況に応じて両方を行いました。もしクエリーのパフォーマンスを追求したいのであれば、この先を読んでください。 N+1 問題 デフォルトで、ActiveRecord の関係は Lazy (遅延型) です。これは、このフレームワークが、実際に関係がアクセスされるまで関係へのアクセスを待つ、ということです。例えば、あるアドレスを持つメンバーを考えてください。コンソールを開き、コマンド member = Member.find 1 を入力します。そうすると、ログに下記が付加されるのがわかります (リスト 3)。 リスト 3. Member.find(1) のログ ^[[4;35;1mMember Columns (0.006198)^[[0m ^[[0mSHOW FIELDS FROM members^[[0m ^[[4;36;1mMember Load (0.002835)^[[0m ^[[0;1mSELECT * FROM members WHERE (members.`id` = 1) ^[[0m Member はあるアドレスに対して、has_one address, as = addressable, dependent = destroy というマクロで定義された関係を持ちます。ActiveRecord が Member をロードした時にはログを見てもアドレス・フィールドがないことに注意してください。しかしコンソールで member.address と入力すると、リスト 4 の内容を development.log の中で見ることができます。 リスト 4. リレーションにアクセスすると強制的にデータベースがアクセスされる ^[[36;2m./vendor/plugins/paginating_find/lib/paginating_find.rb 98 in `find'^[[0m ^[[4;35;1mAddress Load (0.252084)^[[0m ^[[0mSELECT * FROM addresses WHERE (addresses.addressable_id = 1 AND addresses.addressable_type = 'Member') LIMIT 1^[[0m ^[[35;2m./vendor/plugins/paginating_find/lib/paginating_find.rb 98 in `find'^[[0m つまり ActiveRecord は、実際に member.address がアクセスされるまでアドレスの関係へのクエリーを実行しません。このパーシスタンス・フレームワークはメンバーをロードするために大量のデータを移動する必要はないため、通常はこの Lazy な設計で問題はありません。しかし、一連のメンバーと、彼らのすべてのアドレスにアクセスしたい場合を考えてみてください (リスト 5)。 リスト 5. アドレスを持つ複数のメンバーを取得する Member.find([1,2,3]).each {|member| puts member.address.city} これらの全アドレスへのクエリーが表示されるはずなので、パフォーマンスの面から見ると結果は良いものではないでしょう。リスト 6 を見るとそれがわかります。 リスト 6. N+1 問題に対するクエリー ^[[4;36;1mMember Load (0.004063)^[[0m ^[[0;1mSELECT * FROM members WHERE (members.`id` IN (1,2,3)) ^[[0m ^[[36;2m./vendor/plugins/paginating_find/lib/paginating_find.rb 98 in `find'^[[0m ^[[4;35;1mAddress Load (0.000989)^[[0m ^[[0mSELECT * FROM addresses WHERE (addresses.addressable_id = 1 AND addresses.addressable_type = 'Member') LIMIT 1^[[0m ^[[35;2m./vendor/plugins/paginating_find/lib/paginating_find.rb 98 in `find'^[[0m ^[[4;36;1mAddress Columns (0.073840)^[[0m ^[[0;1mSHOW FIELDS FROM addresses^[[0m ^[[4;35;1mAddress Load (0.002012)^[[0m ^[[0mSELECT * FROM addresses WHERE (addresses.addressable_id = 2 AND addresses.addressable_type = 'Member') LIMIT 1^[[0m ^[[35;2m./vendor/plugins/paginating_find/lib/paginating_find.rb 98 in `find'^[[0m ^[[4;36;1mAddress Load (0.000792)^[[0m ^[[0;1mSELECT * FROM addresses WHERE (addresses.addressable_id = 3 AND addresses.addressable_type = 'Member') LIMIT 1^[[0m ^[[36;2m./vendor/plugins/paginating_find/lib/paginating_find.rb 98 in `find'^[[0m 結果は私が言った通り、ひどいものです。全メンバーに対するクエリーが 1 つあり、そしてそれぞれのアドレスに対するクエリーが別にあります。ここでは 3 人のメンバーを取得しましたが、クエリーは 4 つです。つまり N 人のメンバーに対して N+1 のクエリーです。これが恐ろしい N+1 問題です。大部分のパーシスタンス・フレームワークは、この問題を Eager Association (積極的な関連) で解決しています。Rails も例外ではありません。関係にアクセスしなければならないことがわかっているのであれば、それを最初のクエリーに含めてしまうことができます。ActiveRecord は、このために include オプションを使います。クエリーを Member.find([1,2,3], include = address).each {|member| puts member.address.city} に変更したとすると、次のようにもっと良い結果を得ることができます。 リスト 7. N+1 問題を解決する ^[[4;35;1mMember Load Including Associations (0.004458)^[[0m ^[ [0mSELECT members.`id` AS t0_r0, members.`type` AS t0_r1, members.`about_me` AS t0_r2, members.`about_philanthropy` ... addresses.`id` AS t1_r0, addresses.`address1` AS t1_r1, addresses.`address2` AS t1_r2, addresses.`city` AS t1_r3, ... addresses.`addressable_id` AS t1_r8 FROM members LEFT OUTER JOIN addresses ON addresses.addressable_id = members.id AND addresses.addressable_type = 'Member' WHERE (members.`id` IN (1,2,3)) ^[ [0m ^[[35;2m./vendor/plugins/paginating_find/lib/paginating_find.rb 98 in `find'^[[0m このクエリーの方がずっと高速です。1 つのクエリーがすべてのメンバーとアドレスを取得することがわかります。これが Eager Association の動作です。 また、ActiveRecord では include オプションをネストすることもできますが、ネスト深さは 1 レベルのみです。例えば、contacts (連絡先) を多数持つ 1 人の Member (メンバー) と、address (住所) を 1 つ持つ 1 つの Contact を考えてみてください。あるメンバーの連絡先の住む都市をすべて表示したい場合には、リスト 8 のコードを使うことができます。 リスト 8. メンバーの連絡先の都市を取得する member = Member.find(1) member.contacts.each {|contact| puts contact.address.city} このコードは確かに動作しますが、このままでは、そのメンバーと各連絡先、そして各連絡先の住所を照会しなければなりません。 include = contacts を使って contacts を積極的にインクルード (eagerly include) することで、少しパフォーマンスを改善することができます。両方をインクルードすると、もっとパフォーマンスを改善することができます (リスト 9)。 リスト 9. メンバーの連絡先の都市を取得する member = Member.find(1) member.contacts.each {|contact| puts contact.address.city} ネストしたインクルード・オプションを使うと、さらに良くなります。 member = Member.find(1, include = { contacts = address}) member.contacts.each {|contact| puts contact.address.city} このネストしたインクルードは Rails に対して、contacts と address という両方の関係を積極的にインクルードするように命令しています。対象のクエリーで関係を使うことがわかっている場合には、いつでも Eager Loading の方法を使うことができます。この方法は 私達が ChangingThePresent.org で最も頻繁に使用するパフォーマンス最適化方法ですが、制限もあります。3 つ以上のテーブルにわたってテーブルを結合しなければならない場合には、SQL を使った方が得策です。もしレポートを作成する必要がある場合には、ActiveRecord Base.execute("SELECT * FROM...") を使って単純にデータベース接続を利用し、ActiveRecord を完全にバイパスした方が、まず確実に得策です。一般的に、Eager Association は十二分の効果を発揮します。それではここからは話を切り替えて、Rails 開発者が恐れる、もう 1 つのもの、継承を見てみましょう。 継承と Rails 大部分の Rails 開発者は、初めて Rails に出会ったときに、その魅力にとりつかれます。Rails はそれほど容易なのです。単純にデータベース・テーブルに type 列を作成し、すべてのサブクラスを親から継承すれば、あとは Rails が処理してくれます。例えば、Person というクラスを継承する、Customer というテーブルがあるかもしれません。Customer は Person のすべての列と、loyalty number (どの程度の上顧客かを示す数字) と注文履歴を持っています。リスト 10 を見ると、このソリューションが簡潔で美しいことがわかります。マスター・テーブルは、親とすべてのサブクラスに関して、すべての列を持っています。 リスト 10. 継承を実装する create_table "people" do |t| t.column "type", string t.column "first_name", string t.column "last_name", string t.column "loyalty_number", string end class Person ActiveRecord Base end class Customer Person has_many orders end こうしたソリューションは、ほぼあらゆる点で適切です。コードは単純であり、反復的ではありません。クエリーは単純でパフォーマンスが優れていますが、これは複数のサブクラスにアクセスするために結合を行う必要がなく、ActiveRecord が type 列を使ってどのレコードを返すかを判断できるためです。 ただしある面で、ActiveRecord の継承は非常に限定されています。継承の階層構造が広すぎると、継承は壊れてしまいます。例えば ChangingThePresent ではいくつかのコンテンツ・タイプがあり、それぞれが、名前と、簡略説明と詳細説明、いくつかの一般的な表示属性、そしていくつかのカスタム属性を持っています。私達はすべてのコンテンツ・タイプを同じ方法で扱えるように、cause (動機) や nonprofit (非営利)、gift (贈り物)、member (メンバー)、drive (運動)、registry (登録)、その他多くの型のオブジェクトが共通のベース・クラスを継承するようにしたいと思っています。しかしそうすることはできません。もしそうしてしまうと、Rails モデルは私達のオブジェクト・モデルの中身を 1 つのテーブルの中に持つことになるからです。これは現実的なソリューションではありません。 他の方法を探る 私達はこの問題に対して、3 つのソリューションを試しました。最初のソリューションは、それぞれ独自のテーブルの中に適当な各クラスを持つようにし、ビューを使ってコンテンツ用に共通のテーブルを作る方法です。このソリューションはすぐに放棄されました。理由は Rails がデータベース・ビューをうまく処理できないためです。 2 番目のソリューションは、単純なポリモーフィズムを使う方法です。この方法では、適当な各サブクラスが独自のテーブルを持ちます。そして共通の列を各テーブルの中に持たせます。例えば、Gift、Cause、Nonprofit というサブクラスを持ち、name プロパティーしか持たない Content というスーパークラスが必要だとすると、Gift、Nonprofit、Cause はすべて name プロパティーを持つことになります。Ruby は動的な型付けをするため、これらは共通のベース・クラスを継承する必要はありません。これらは同じ一連のメソッドに応答すればよいだけです。ChangingThePresent は (特に画像を処理する場合には) 何カ所かでポリモーフィズムを使って共通の動作を提供しています。 3 番目の方法は、共通の機能を提供しますが、継承の代わりに関連を使って共通機能を提供します。ActiveRecord には Polymorphic Association (多相的な関連) という機能があります。この機能は、あるクラスに継承を使わずに共通の動作を付加する上で理想的です。Polymorphic Association の例は、先ほどのAddress で見ました。同じ方法を使って (継承を使わず)、コンテンツ管理用に共通属性を付加することができます。ContentBase というクラスを考えてみてください。通常、このクラスを別のクラスに関連付けるためには、has_one 関係と単純な外部キーを使います。しかし皆さんはおそらく、この ContentBase が複数のクラスを処理できるようにしたいはずです。そのためには、外部キーと、対象とするクラスの型を定義する列も必要です。ActiveRecord の Polymorphic Association は、正にそのように動作するのです。リスト 11 のクラスを見てください。 リスト 11. サイトのコンテンツの関係の両側 class Cause ActiveRecord Base has_one content_base, as = displayable, dependent = destroy ... end class Nonprofit ActiveRecord Base has_one content_base, as = displayable, dependent = destroy ... end class ContentBase ActiveRecord Base belongs_to displayable, polymorphic = true end 通常、belongs_to 関係は 1 つのクラスと関係するだけですが、ContentBase の関係は多相的です。外部キーは、レコードを識別するための ID 以外に、テーブルを識別するための型も持っています。この方法を使うと、継承の利点を最大限に利用することができます。共通の機能はすべて 1 つのクラスの中にあります。しかし他にも、いくつかの副次的な効果があります。Cause と Nonprofit のすべての列を 1 つのテーブルの中に持つ必要がありません。 Polymorphic Association は真の外部キーを使わないため、データベース管理者の中には Polymorphic Association を好まない人もいますが、ChangingThePresent では Polymorphic Association を自由に使っています。実のところ、このデータ・モデルは、理論的には思ったほど美しくありません。参照整合性などのデータベース機能を使うことができず、ツールを使って列名を元に関係を見つけることもできません。しかし私達にとっては、この方法による問題よりも、クリーンで単純なオブジェクト・モデルの利点の方が重要なのです。 create_table "content_bases", force = true do |t| t.column "short_description", string ... t.column "displayable_type", string t.column "displayable_id", integer end まとめ ActiveRecord は完璧に有能なパーシスタンス・フレームワークです。ActiveRecord を使えばスケーラブルで信頼性の高いシステムを構築することができます。しかし他のデータベース・フレームワークと同じく、このフレームワークが生成する SQL に注目する必要があります。時々問題が起きているのであれば、方法を調整する必要があります。索引を調整すること、include で Eager Loading を使うこと、また継承の代わりに Polymorphic Association を適切に使うことは、コード・ベースを改善するための方法のうちの、単なる 3 つにすぎません。
https://w.atwiki.jp/formallang/pages/13.html
"Extension of Tabled 0L-Systems and Languages" (1973) ET0L-Systemを提案した論文。L-System系の言語理論(developmental language)の方向で、Chomsky系の形式言語理論に親和性が高い形にまとめたのがこの研究。良いClosure Propertyを持っていたり(Full AFL)、文脈自由言語を真に含んでいたりする。 Grzegorz Rozenberg International Journal of Computer and Information Sciences, Vol. 2, No. 4, pp. 311-336, 1973 http //dx.doi.org/10.1007/BF00985664 これ以前のL-System系のシステムと違って、非終端記号と終端記号の区別を入れたのがポイントなのだと思う。 ET0L とは G= V,Σ,ω,P V: alphabet. 非終端記号と終端記号の集合 Σ: target alphabet. 終端記号の集合(⊆ V) ω: axiom. 開始文字列(∈V*) P: table. 導出規則のテーブル = {P1, ..., Pn} Pi: a - α の形の"導出規則"の有限集合。ただしa∈V,α∈V*。Piはcomplete(∀a∈V aから始まる導出規則が存在) 1ステップの書き換え s = t は Pからどれか一つPiを選ぶ s = a1a2...an, a1- α1∈Pi, ..., an- αn∈Pi のとき t=α1...αn で定義される。Gの定義する言語は L(G) = {t∈Σ* | ω= *t}。 各PiがDeterministicな場合(つまり、∀a∈V aから始まる導出規則が"唯一"存在な場合)、システム自体がDeterministicであるという。EDT0L と書く。αが常に空文字列でないような場合を Productive という。 CFG との関係 1ステップで全体を並行して一気に書き換えるのがポイント。どのPiを使ったかによって、導出の深さが同じところの間でなんとなくシンクロがとられて、文脈自由を越える言語が書ける。 T0L との関係 V=ΣなのがT0L。非終端記号と終端記号の区別を入れたのがET0L。 E0L との関係 |P|=1 なのが E0L。テーブルが複数種類あるのが ET0L。 0L-System との関係 V=Σで|P|=1なのが0L。 L-System との関係 0L は L の拡張ではなく制限なので注意。 "Surface Tree Languages and Parallel Derivation Trees" (1976) ET0L = yield(T(MON))。ET0L言語族は、monadic treeを入力言語としてTop-down Tree Transducerで生成できる木のyield(葉を左から右に並べた文字列)として得られる言語族に等しい。また、deterministic 版についても EDT0L = yield(DT(MON)) が成り立つ。 Joost Engelfriet Theoretical Computer Science, vol 2. pp. 9-27 http //dx.doi.org/10.1016/0304-3975(76)90003-7
https://w.atwiki.jp/axim/pages/46.html
Windows Mobile デバイスセンター ActiveSync ActiveSyncToggle 以下の記述は日本語版ActiveSyncについての解説です。 Windows Mobile デバイスセンター http //www.microsoft.com/japan/windowsmobile/prodinfo/mobility.mspx Windows Vista では、Windows Mobile デバイスとの接続に Windows Mobile デバイス センターを利用します。 Windows XP および XP 以前のバージョン向けには引き続き ActiveSync を利用します。 PC で活用している各種コンテンツ (文書データ、Outlook データ、メディアファイルなど) をスムーズにデバイスに移すことができ、 またデバイスで作成または撮影したデータなども簡単に PC に取り込めるようになっています。 Windows Mobile デバイス センターがインストールされていない Windows Vista 搭載 PC に Windows Mobile デバイスを接続した場合でも Windows Mobile デバイスと認識され、Windows Vista に実装されている自動再生プログラムにより、基本的な操作である画像の同期や ファイルの転送を行うことが出来ます。 ActiveSync 現在の最新バージョンはActiveSync4.5 (2007/02現在) ActiveSync4.5日本語版ダウンロード http //www.microsoft.com/downloads/details.aspx?familyid=0061F2A4-F386-4455-8482-65C7F96F84F6&displaylang=ja ActiveSync3.xの最終バージョンはActiveSync3.8。 ActiveSync3.xはMicrosoftのサイトからは現在ダウンロードできません。 Axim付属のCD-ROMのものを利用してください。 備考 X51/X51v(WindowsMobile5.0)はActiveSync4.0以上必須。3.x使用不可。 X50/X50v(WindowsMobile2003SE)はActiveSync3.x使用可、4.0以上も使用可。 ActiveSync4.xから無線LANでのシンクロはサポートされなくなりました。 BlueToothでの無線シンクロはできます。 ActiveSyncToggle http //micrologics.co.uk/library/ast/ PC上のActiveSyncを有効・無効にできます。
https://w.atwiki.jp/china_pad/pages/264.html
Actions ATM7029 Actions ATM7029解説 Cortex-A5疑惑cpuinfoの型番がCortex-A5のもの? シングルスレッド性能が異様に低い BogoMIPSの値がA7よりも低い Antutu3.1.1でいきなりスコアが急落した 内部文章にCortex-A5と書かれている? Cortex-A9 "Family"? アウトオブオーダーでなく、インオーダー実行 その他不具合など 仕様 リンク コメント 解説 ACT(Actions) ATM7029(Cortex-A9 Family(A5?) QuadCore 1.2GHz + GC1000) AinolやRamosから搭載タブレットが発表されたSoC Ainol Novo10Hero2、Ainol Novo7Venusに搭載。40nmでの製造 CPUは中華にありがちなクロック詐欺で、公称値の1.5GHzではなく実際は1.2GHz Actionsの公式には最大1.3GHz(シングルコア時?)と書かれている Cortex-A9を謳っているが、CPUのコアは内部的にCortex-A9に偽装したCortex-A5な可能性が高い Cortex A5は、ARMの小型で低価格・低消費電力・低性能なコアで Cortex-A9と比較すると、電力あたりの性能自体はいいが性能を伸ばすことが難しい 実際にCortex-A9やCortex-A7のクアッドコアSoCと比較すると 各種ベンチマークや、cpuinfoなどの結果でCPUの性能が低めに出ることが多い なおSoCの消費電力はCPUコア以外も大きく影響し、消費電力の割合はSoC以外の部品の方が高い そもそもATM7029がCortex-A5だという前提で、推測をするが ATM7029を搭載した機種の多くで、 Cortex-A9 "Family"という表記 がされており Cortex-A5とCortex-A9は、マルチコア拡張の方式などではほぼ同じで A9とはいくつか共通点があり、そもそも同じARMv7のCortex-Aファミリーであるので Cortex-A5でもCortex-A9 "Family"としているのではないかと思われる(要するに詐欺だが) GPUには、Vivante GC1000が搭載されている Mali-400MP4と比較すると、こちらもあまり性能は高くない またVivanteシリーズの宿命として、3Dゲームの互換性に問題がある? 高速起動機能があり、搭載機のAinol Novo10Hero2も20秒程度で起動する antutu v3.0.3のスコアはAinol Novo10Hero2が12000程度(?)だったが Antutu 3.1ではスコアが6600程度に落ちたようだ またFWや端末次第で10000程度だったり、7-8000程度など様々な報告があるが 最近(2013年4月)では大体、8000-9000程度のスコアが報告されることが多い (端末の解像度やAntutuのバージョンなどにも依存します) Rockchip RK3188やSamsung Exynos4412を搭載した端末が ある程度値下がりしてきた上、Rockchip RK3066より性能が低いとされることもあり その他の高性能なSoC搭載機と競合する、ある程度以上の価格帯では人気がないが 一部の低価格端末(Allfine fine7 Genius)などは、ATM7029搭載機でも人気がある (あくまで個人の主観です、評価が変わる可能性もあります) 動画は同時6再生や、4k再生を謳うこともあるが、実際にどの程度再生できるのかはよくわかっていない ACT ATM7025(Cortex-A5? QuadCore 1.0GHz? + GC1000)という廉価版があるようだ (Novo7Venus Liteに搭載) Cortex-A5疑惑 大体の指標であり、大雑把なものであるが Cortex-A5 1.57 DMIPS/MHz(コアあたり) Cortex-A7 1.9 DMIPS/MHz(コアあたり) 、Cortex-A9 2.5 DMIPS/MHz(コアあたり) とされている よくわからない場合はつまり同クロック、同コア数で A5=ARM11(世界初のAndroidスマートフォン、T-Mobile G1に搭載) A5x1.2=A7 A5x1.6=A9程度の性能と考えてほしい [Slatedroid - ATM7029 an ARM Cortex A9 or A5?] http //www.slatedroid.com/topic/44034-atm7029-an-arm-cortex-a9-or-a5/ Slatedroidでも議論がされているが 既にSlatedroidではATM7029はSoC別のカテゴリで Cortex-A5のカテゴリ に入れられている cpuinfoの型番がCortex-A5のもの? From my hero ii that i almost sold. Processor ARMv7 Processor rev 1 (v7l) Features swp half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 Cortex-A9ではvfp v4は非対応、少なくともA9ではない↑ (略) CPU architecture 7 CPU variant 0x0 CPU part 0xc05 ← この番号はCortex-A5のもの (略) Serial 0000000000000000 Slatedroid より引用 誰か持ってる方でcpuinfoで検証してもらえると助かります (ターミナルからcat /proc/cpuinfoと打つだけです) シングルスレッド性能が異様に低い 831 名無しさん@お腹いっぱい。 [sage] 2013/02/04(月) 01 23 41.43 ID zXwAVBLY(3) Linpack for Android Hero@1.2GHz Single threaded Hero 1 51MFLOPS 1.63s Hero 2 30MFLOPS 2.77s ATM7029(Cortex A5)はクロック合わせたA9 Amlogic8726-M6(Cortex-A9 )の6割程度 Multithreaded Hero 1 79MFLOPS 2.13s Hero 2 69MLOPS 2.42s 2コアvs4コアですら負けてる これからATM7025・ATM7029乗ってるタブ買おうかと思ってる人は注意が必要 BogoMIPSの値がA7よりも低い ATM7029・AllwinnerA31・RK3066のcpuinfo比較 http //www.slatedroid.com/topic/44034-atm7029-an-arm-cortex-a9-or-a5/ From my hero ii that i almost sold.(ATM7029,Cortex-A5?*4 1.2GHz) Processor ARMv7 Processor rev 1 (v7l) processor 0←コア数 BogoMIPS 1114.46←性能を表す、数字が大きいほど性能が高い processor 1 BogoMIPS 1114.46 processor 2 BogoMIPS 1114.46 processor 3 BogoMIPS 1114.46 Now my Onda V812 (AllwinnerA31,Cortex-A7*4 1GHz) Processor ARMv7 Processor rev 3 (v7l) processor 0 BogoMIPS 1725.93 processor 1 BogoMIPS 1725.93 And now my Ployer Momo8 IPS (RK3066,Cortex-A9*2 1.6GHz) Processor ARMv7 Processor rev 0 (v7l) processor 0 BogoMIPS 3214.95 processor 1 BogoMIPS 3214.95 Antutu3.1.1でいきなりスコアが急落した http //mp3.zol.com.cn/352/3529308.html Antutu v3.1 GPUの性能が異なるので参考にしづらい部分がある上に 同じCPUでもクロックが違うことがあるので参考程度にしかならないが... Rockchip RK3188 (Cortex-A9*4(1.6GHz) + Mali400MP4 533MHz)18000前後 Samsung Exynos4412 (Cortex-A9*4(1.4GHz) + Mali400MP4 440MHz)16000前後 NvidiaTegra3(T30L) (Cortex-A9*4(1.2GHz) + GeForceULP)12000前後 AllwinnerA31 (Cortex-7*4(1.0GHz) + PowerVR SGX544MP2) 12000前後 Rockchip RK3066 (Cortex-A9*2(1.6GHz) + Mali400MP4 266MHz)12000前後 Amlogic8726-MX (Cortex-A9*2(1.5GHz) + Mali400MP2 400MHz)9000前後(クロックによる) ACT ATM7029 (Cortex-A5*4(1.2GHz) + Vivante GC1000)6600程度(v3.0.3では12000程度であった) Rockchip RK2918 (Cortex-A8(1.0GHz) + Vivante GC800)2500程度 なおFWやAntutuのバージョンによってスコアは異なるようだが LinPackなどでは基本的に変化がなかったようだ 内部文章にCortex-A5と書かれている? [ATM7029方案 艾诺NOVO10英雄四核评测] http //www.imp3.net/10/show.php?itemid=37725 page=5 より。内部文章にCortex-A5と書かれている?L2キャッシュも少ないようだ Cortex-A9 "Family"? また上でも書いているが、ATM7029搭載機はそもそもCortex-A9とは明記されておらず Ainolの公式の発表でも、Cortex-A9 "Family"としか書かれていない Actionsの公式にもCortex-A9 "Fimily"と表記されている(Familyの誤字だと思われる) Hero2 Venus Actions公式 + Leopard CPU Subsystem - ARM Cortex-A9 fimily CPU, Single CPU frequency is up to 1.3GHz. - Fully comply to ARM cortex V7 instruction. - A low power and efficient multi-core architecture, アウトオブオーダーでなく、インオーダー実行 本来Cortex-A9であれば、アウトオブオーダーでの実行なのだが AtomやCortex-A5、A7、A8と同じインオーダー実行になっている そのため仮にA9ベースの独自のコアであったとしても、あまりパフォーマンスは望めないと思われる Actions公式 + Leopard CPU Subsystem (略) - In-order pipeline with dynamic branch prediction equipped effectively provide single-core, dual-core, and quad-core functionality. http //www.actions-semi.com/en/productview.aspx?cat=98 id=108 その他不具合など 搭載機の多くでAntutuが落ちる? performancepolicyをアンインストールし設定のユーザ補助の中の System Performanceあるのでタッチして、performanceをチェックするとAntutuを起動できる?(要root) 仕様 Actions公式(http //www.actions-semi.com/en/productview.aspx?cat=98 id=108)より引用 + Leopard CPU Subsystem ARM Cortex-A9 fimily CPU, Single CPU frequency is up to 1.3GHz. Fully comply to ARM cortex V7 instruction. A low power and efficient multi-core architecture,effectively provide single-core, dual-core, and quad-core functionality. Programmable memory management unit. L1 and L2 cache equipped Supporting VFP v4(Vector Floating Point v4) architecture and compliant with the IEEE 754 standard for floating-point calculation Advanced SIMD technology is equipped for the acceleration of multimedia application performance, such as 3D graphics and high resolution image processing. In-order pipeline with dynamic branch prediction equipped 256bit E-fuse equipped + Video and Audio Encoding H.264 1920x1080@60fps supported JPEG baseline, 8192x8192 supported Panoramic Image Mosaics supported Photographing while video recording supported MP3/WMA/WAV/AC3/AAC/dts formats supported (some may be done by the 3rd party applications) + Video and Audio Decoding Most popular video format are supported including AVI、WMV、MOV、MKV、RM、RMVB、MP4、M4V、DivX、Xvid、FLV、3GP、DAT、VOB、MPG、MPEG、AVS、ASF、TP、TRP、TS、M2TS、MTS(some may be done by the 3rd party applications) 1920x1080@60fps supported,up to 4K*2K Progressive JPEG supported Average data rate 60Mbps,Peak rate up to 120Mbps MJPEG baseline, 30000x15000 supoorted Most popular audio formats are supported including MP3、WMA、CBR、VBROGG、APE、FLAC、WAV、AAC、AudibleRA、AC3、dts、MIDI、AMR、AIFF、MPC (some may be done by the 3rd party applications) + Graphic Process Unit 3D OpenGL ES1.1 and 2.0 2D OpenVG1.1, DirectFB, GDI/DirectDraw Full ES2.0 extensions supported except GL_EXT_texture_type_2_10_10_10_REV. Full ES2.0 GLSL (Shading Language )supported Full featured 3D Graphics pipeline equipped Up to 16 ultra-thread unified shader units(SIMD4 transcendental,ctl-flow,tx-load), but limited to per shader per clock. IEEE 32bit floating-point compliant for long shader instructions supporting MSAA 4x, FSAA 16x supported YUV-to-RGB conversion supported Video scaling and format conversion supported. 32Kx32K raster 2D coordination system equipped IEEE 32bit floating-point compliant. While denorms are set to zero, rounding to zero is supported. Up to 256 thread per shader in flight. 8k x 8k max texture size supported RGB565, 5551, 4444, 8888 Destination color format with dithering supported + Display Four layers (1 graphic layers, 3 video layer) supported Scaler input size up to 2K*2K Simultaneously output to TV and LCD supported Alpha blending, color key, dithering and color space conversion,Gamma correction supported Flip and Scale supported Source format supported ABGR8888,ABGR1555, ARGB8888, RGB565, YUV 4 2 0 planar format, YUV 4 2 0 semi-planar format + Memory High-bandwidth DDR2/3 controller, up to 2GB, 533MHz Internal Nand flash controller supporting 1bit/4bit/8bit/12bit/24bit/40bit/60bit ECC, 4CEs,Toggle NAND 1.0 2.0, On-Fi 2.3 3.0,SLC/MLC/TLC NAND Flash 3 SD/SDIO controller supported EMMC4.4.3 supported + Highly-integration of peripherals LVDS interface equipped for connecting bigger size LCD panel HDMI Tx(transmitter) equipped for HDMI 1.4a compliant USB2.0*2 port equipped for both HOST/Slave supporting I2C*3, SPI*4, UART*4, IR*2, I2S, PCM, SPDIF interface equipped 24bit LCD controller support SDTV CVBS supported 4x3 Key matrix supported Two joystick suppoted 10/100Base ethernet MAC equipped + OS(Operation System) Linux Android 4.1 Jelly Bean and above + Power 3.3V I/O power and 1.0V core power requirred Actions’ LPD Gen. II(Low Power Design Generation II) architecture integrated Actions’ ADP(Adaptive Dynamic Power) architecture integrated Multiple standby state supported + Package Type TFBGA359 compliant with RoHS requirement Dimension 17mm*17mm size Ball pitch 0.8mm リンク [Slatedroid - ATM7029 an ARM Cortex A9 or A5?] http //www.slatedroid.com/topic/44034-atm7029-an-arm-cortex-a9-or-a5/ [ATM7029方案 艾诺NOVO10英雄四核评测] http //www.imp3.net/10/show.php?itemid=37725 page=5 [Actions Semiconductor Co., Ltd.(炬力集成电路设计有限公司)] http //www.actions-semi.com/en/index.aspx [Actions Semiconductor TM7029] http //www.actions-semi.com/en/productview.aspx?cat=98 id=108 コメント