ライブネス解析への賛歌;SSAからレジスタへ
An ode to livelyness analysis; SSA to registers (xnacly.me)
要約
この記事は、コンパイラのレジスタ割り当てにおける重要なステップであるライブネス解析について解説しています。著者のプログラミング言語purple-gardenが、SSA(Static Single Assignment)形式と独自のブロックパラメータ構造をどのように利用しているかを詳述し、IRから値の生存期間(ライブネス)を計算し、それをバイトコードVMとx86 JITコンパイラの両方のレジスタ割り当てにどのように活用するかを、Rustでの実装詳細と共に示しています。
全文翻訳
ライブネス解析への賛歌;SSAからレジスタへ
愛の歌でしょうか?「歓喜の歌」を聴きながら読んでください。この記事のために描いた素晴らしいピクセルアートもご覧ください。
[画像: livelyness analysis] それは生命を分析している
現在、私は自身のプログラミング言語purple-gardenのために、バイトコード仮想マシンとx86ジャストインタイムコンパイラの両方でレジスタ割り当てに取り組んでいます。
レジスタ割り当てとは、無限の量の仮想レジスタを、ハードウェアが持つ限られたストレージリソース、具体的には汎用レジスタ(GPR)、浮動小数点レジスタ(FPR)、およびスタックに割り当てることです(例示的な概要についてはCPU Registers x86を参照してください)。この大仕事の最初のステップがライブネス解析です。
ガーデン(園芸)の例
最もシンプルでありながら、やや非自明な例は次のようになります。
GARDEN
1fn f(a:Int n:Int acc:Int) Int {
2 match {
3 n < 1 { a + acc }
4 { f(a n-1 acc*n) }
5 }
6}
これは、Max Bernsteinによる非常に優れた記事「Linear scan register allocation on SSA」から私が「逆アセンブル」した以下のCコードと同等です[1]。この記事では、IRの表示がよく理解できなかったため、C言語に翻訳し、その後自分の言語(purple gardenにはループがないため、これはf(a n 1)で呼び出された場合にのみ同等です🤓)に翻訳しました。
C
1long f(long a, long n) {
2 long acc = 1;
3 while (n >= 1) {
4 acc = acc * n;
5 n = n - 1;
6 }
7 return a + acc;
8}
f(a,n,acc: Int): Intをpurple gardenのパイプラインに渡すと、最適化された即時表現(-Iを使用)が得られます。これは、一部の値がデッド(不要)であり、削除されたことを意味します[2]。
LLVM
1fn f1(%v0:Int, %v1:Int, %v2:Int) -> Int {
2 b0(%v0, %v1, %v2):
3 %v4:Bool = ILt %v1, 1
4 br %v4, b1(%v0, %v1, %v2), b2(%v0, %v1, %v2)
5 b1(%v5, %v6, %v7):
6 %v8:Int = IAdd %v5, %v7
7 ret %v8
8 b2(%v9, %v10, %v11):
9 %v13:Int = ISub %v10, 1
10 %v14:Int = IMul %v11, %v10
11 tail f1(%v9, %v13, %v14)
12}
Purple garden IRの構造と表記法
Purple gardenの即時表現は、静的単一代入(SSA)形式に基づいています。これは、各値/仮想レジスタが一度だけ代入され、すべて不変であることを意味します。これらは%vNと表記され、仮想レジスタまたは値(読者が好きな方)を意味します。
他の多くのSSA IRとは異なり、pgirはphiノードを使用しません。代わりにブロックパラメータと終端記号を採用しました。これはブロックで構成され、各ブロックはパラメータのリスト、終端記号、および命令の本体を持ち、各命令はSSA形式です。すべての値はブロックローカルであり、ブロック間の唯一のデータフローはブロックパラメータとブロック終端記号を介して促進されます。
LLVM
1; ID N のブロック
2; |
3; v
4 b2(%v0, %v1, %v2):
5; ^^^^^^^^^^^^^ パラメータ 0..2
6
7; 値 / 仮想レジスタの定義
8; |
9; | 命令の種類
10; v v
11 %v7:Int = ISub %v1, 1 ; <-- 即値
12; ^ ^ 引数
13; |
14; 命令結果の型
15
16; パラメータ付き終端記号
17 tail f1(%v0, %v7, %v8)
Rustの用語で言うと、次のようになります。
RUST
1pub struct Block<'b, A: Allocator = Global> {
2 pub id: Id,
3 pub instructions: Vec<Instr<'b>, A>,
4 pub params: ParamsId,
5 pub term: Option<Terminator>,
6 // [...]
7}
8
9pub enum Instr<'i> {
10 BinImm {
11 op: BinOp,
12 dst: TypeId<'i>,
13 lhs: Id,
14 imm: i32,
15 },
16 // [...]
17 Noop,
18}
19
20pub enum Terminator {
21 Return {
22 value: Option<Id>,
23 },
24 // [...]
25 Tail {
26 func: Id,
27 args: ParamsId,
28 },
29 // [...]
30}
pretty easy right? ( pretty easy right? は原文ママ)
仮想レジスタ / 値とその生存期間
前のIR例を、今度は仮想レジスタの生存期間注釈付きで見てみましょう(CLIが-IIで呼び出された場合)。
LLVM
1fn f1(%v0:Int, %v1:Int, %v2:Int) -> Int { %v0 %v1 %v2 %v4 %v5 %v7 %v8 %v9 %v10 %v11 %v13 %v14
2 b0(%v0, %v1, %v2): | | |
3 %v4:Bool = ILt %v1, 1 | | | |
4 br %v4, b1(%v0, %v1, %v2), b2(%v0, %v1, %v2) | | | |
5 b1(%v5, %v6, %v7): | |
6 %v8:Int = IAdd %v5, %v7 | | |
7 ret %v8 |
8 b2(%v9, %v10, %v11): | | |
9 %v13:Int = ISub %v10, 1 | | | |
10 %v14:Int = IMul %v11, %v10 | | | | |
11 tail f1(%v9, %v13, %v14) | | |
12}
この表示は、各値の生存期間を視覚的に理解できるようにします。これはlo(開始)とhi(終了)でエンコードされています。以下は非視覚的な理解を可能にするものです。(位置は線形化されています:ブロックパラメータはブロックのベースに、ブロック命令はブロックのベース+1+命令位置に、終端記号はブロックのベース+命令数+1にあります)
| 値 | lo | hi |
|---|---|---|
| %v0 | 0 | 2 |
| %v1 | 0 | 2 |
| %v2 | 0 | 2 |
| %v4 | 1 | 2 |
| %v5 | 3 | 4 |
| %v7 | 3 | 4 |
| %v8 | 4 | 5 |
| %v9 | 6 | 9 |
| %v10 | 6 | 8 |
| %v11 | 6 | 8 |
| %v13 | 7 | 9 |
| %v14 | 8 | 9 |
短くも甘い実装:
それが終われば、アルゴリズムは単純なものになります。
- ブロックをウォークする
- 終端記号を訪問し、すべての仮想レジスタの使用を観察する
- 命令を逆順に訪問し、すべての仮想レジスタの定義と使用を観察する
- ブロックのパラメータを訪問し、それぞれを観察する
観測
観測は次のように定義されます。
- タプル
(lo,hi)とposを使用 hi==0の場合;hi=posを設定lo=pos
酸化された(Rustの)用語で言うと、次のようになります。
RUST
1/// observer Id := (lo,hi), always updates lo, only fills hi, if previously unset
2fn observe<V: Allocator>(out: &mut Vec<(u32, u32), V>, id: Id, pos: u32) {
3 let idx = id.0 as usize;
4 let e = &mut out[idx];
5 if e.1 == 0 {
6 e.1 = pos;
7 }
8 e.0 = pos;
9}
定義と使用を助けるヘルパー:
命令や終端記号での定義と使用を尋ねます。
これは、Func::def_of が、命令に定義がある場合に仮想レジスタの定義を返すことを意味します。
RUST
1impl Func<'_> {
2 #[must_use]
3 pub fn def_of(instr: &Instr<'_>) -> Option<Id> {
4 match instr {
5 Instr::Alloc { dst, .. }
6 | Instr::Load { dst, .. }
7 | Instr::AddrOf { dst, .. }
8 | Instr::Bin { dst, .. }
9 | Instr::BinImm { dst, .. }
10 | Instr::LoadConst { dst, .. }
11 | Instr::Call { dst, .. }
12 | Instr::Sys { dst, .. }
13 | Instr::Cast { dst, .. }
14 | Instr::Lookup { dst, .. }
15 | Instr::Assert { dst, .. } => Some(dst.id),
16 Instr::Store { .. } | Instr::Noop => None,
17 }
18 }
19}
命令での値の使用ごとにfを呼び出す
これは、命令での値の使用ごとにfを呼び出すことを意味します。
RUST
1pub fn for_each_use_of_instr(&self, instr: &Instr<'_>, mut f: impl FnMut(Id)) {
2 match instr {
3 Instr::Bin { lhs, rhs, .. } => {
4 f(*lhs);
5 f(*rhs);
6 }
7 Instr::BinImm { lhs, .. } => f(*lhs),
8 Instr::Call { args, .. } | Instr::Sys { args, .. } => {
9 for &a in self.params(*args) {
10 f(a);
11 }
12 }
13 Instr::Cast { from, .. } => f(from.id),
14 Instr::Lookup { subject, .. } => f(*subject),
15 Instr::Store { src, base, .. } => {
16 f(*src);
17 f(*base);
18 }
19 Instr::Assert { cond, .. } => f(*cond),
20 Instr::Load { base, .. } | Instr::AddrOf { base, .. } => f(*base),
21 Instr::LoadConst { .. } | Instr::Noop | Instr::Alloc { .. } => {} // Noop, Alloc は使用しない
22 }
23}
終端記号での値の使用ごとにfを呼び出す
これは、終端記号での値の使用ごとにfを呼び出すことを意味します。
RUST
1pub fn for_each_use_of_term(&self, term: &Terminator, mut f: impl FnMut(Id)) {
2 match term {
3 Terminator::Return {
4 value: Some(id), ..
5 } => f(*id),
6 Terminator::Return { value: None, .. } => {} // 値がない場合は何もしない
7 Terminator::Jump { params, .. } => {
8 for &p in self.params(*params) {
9 f(p);
10 }
11 }
12 Terminator::Tail { args, .. } => {
13 for &a in self.params(*args) {
14 f(a);
15 }
16 }
17 Terminator::Switch {
18 subject,
19 cases,
20 default: (_, default_params),
21 ..
22 } => {
23 f(*subject);
24 for case in self.cases(*cases) {
25 for &p in self.params(case.target.1) {
26 f(p);
27 }
28 }
29 for &p in self.params(*default_params) {
30 f(p);
31 }
32 }
33 Terminator::Branch {
34 cond,
35 yes: (_, yes_params),
36 no: (_, no_params),
37 ..
38 } => {
39 f(*cond);
40 for &p in self.params(*yes_params) {
41 f(p);
42 }
43 for &p in self.params(*no_params) {
44 f(p);
45 }
46 }
47 Terminator::BranchCmpImm {
48 lhs,
49 yes: (_, yes_params),
50 no: (_, no_params),
51 ..
52 }
53 | Terminator::BranchCmp {
54 lhs,
55 yes: (_, yes_params),
56 no: (_, no_params),
57 ..
58 } => {
59 f(*lhs);
60 if let Terminator::BranchCmp { rhs, .. } = term {
61 f(*rhs);
62 }
63 for &p in self.params(*yes_params) {
64 f(p);
65 }
66 for &p in self.params(*no_params) {
67 f(p);
68 }
69 }
70 }
71}
全てをRustで結合:
いくつかの簡単なコンテキストインジェクター:
outはVアロケータで割り当てられた再利用可能なVecなので、リセットおよびリサイズされます。UNSETはデフォルトの空の値として使用されます。Func::next_id()は、関数内で定義された最大のID(self)+1を返します。
RUST
1impl<A: Allocator> Func<'_, A> {
2 pub fn live_set_into<V: Allocator>(&self, out: &mut Vec<(u32, u32), V>) {
3 const UNSET: (u32, u32) = (u32::MAX, 0u32);
4
5 out.clear();
6 out.resize(self.next_id() as usize, UNSET);
7
8 // observeは前述の通り
9
10 let mut base = 0;
11 for block in self.blocks.iter().filter(|b| !b.tombstone) {
12 let block_offset = block.instructions.len();
13 let offset = base;
14 if let Some(term) = &block.term {
15 self.for_each_use_of_term(term, |id| {
16 // termは命令数 +1
17 observe(out, id, (offset + block_offset + 1) as u32)
18 });
19 }
20
21 for (i, instr) in block.instructions.iter().enumerate().rev() {
22 // +1 なので、パラメータが始まる0から開始できません :)
23 let pos = (base + 1 + i) as u32;
24 self.for_each_use_of_instr(instr, |id| observe(out, id, pos));
25 if let Some(def) = Func::def_of(instr) {
26 observe(out, def, pos)
27 }
28 }
29
30 for &p in self.params(block.params) {
31 observe(out, p, base as u32);
32 }
33
34 // パラメータ + 命令 + 終端記号
35 base += block_offset + 2;
36 }
37 }
38}
バイトコードバックエンドのためのレジスタ割り当てへのライブセット解析の組み込み
これで、どの値がどこで生きているか、そしていつ死ぬと見なされるかがわかったので、この情報をレジスタアロケータに渡して、ハードウェアまたは仮想マシンの制約に適合させる必要がある任意の値のレジスタまたはスタックスロットを要求できます。
準備とレジスタ割り当てプリパス
purple garden VM用のIRをコンパイルする際、最初のステップはライブセットを計算することです。これは、前述のアルゴリズムを使用し、その後Cc::preallocメソッドでプリ割り当てパスを実行します。
RUST
1impl<'cc, S: Allocator + Clone, A: Allocator + Clone> Cc<'cc, S, A> {
2 fn cc<F: Allocator>(
3 &mut self,
4 fun: &'cc Func<'cc, F>,
5 native: Option<&mut purple_garden_jit::CodeArena<impl Pages>>,
6 ) {
7 // [...]
8
9 // ライブセットを計算
10 fun.live_set_into(&mut self.live_set);
11
12 // 低レベル化の前にIRを一度ウォークします。これ以降は単純な
13 // ルックアップになります。
14 self.prealloc(fun);
15
16 // [...] ブロックをイテレート
17
18 // [...] 命令をイテレート
19
20 // スタックを指すdstを持つ命令の秘密の後処理
21 if let Some(Location::Stack(slot)) =
22 Func::def_of(instruction).and_then(|dst| self.regalloc.location(dst))
23 {
24 self.emit(Op::StoreSlot { slot, src: TMP });
25 }
26 }
27}
Bin IRオペレーションの低レベル化
Binはベースラインオペレーションです。私たちの例で見られるBinImmオペレーション(ISub %v10, 1)は最適化です(ディスパッチが1つ少なく、メモリインタラクションが少ない)。これは即値の右辺値で同じようにコンパイルされます。
RUST
1impl<'cc, S: Allocator + Clone, A: Allocator + Clone> Cc<'cc, S, A> {
2 fn instr<F: Allocator>(&mut self, owner: &'cc Func<'cc, F>, i: &'cc ir::Instr<'cc>) {
3 match i {
4 // [...] 他のすべてのIR命令
5 ir::Instr::Bin {
6 op,
7 dst,
8 lhs,
9 rhs,
10 ..
11 } => {
12 // レジスタ割り当てプリパスとの連携
13 let dst = self.def_register(dst.id);
14 let lhs = self.ensure_register(*lhs);
15 let rhs = self.ensure_register(*rhs);
16
17 macro_rules! emit_bins {
18 ($($name:ident),*) => {
19 match op {
20 $(
21 ir::BinOp::$name => {
22 Op::$name {
23 dst,
24 lhs,
25 rhs,
26 }
27 },
28 )*
29 }
30 };
31 }
32
33 self.emit(emit_bins! {
34 IAdd, ISub, IMul, IDiv, IMod, IAnd, ILt, IGt, IEq,
35 DAdd, DSub, DMul, DDiv, DLt, DGt,
36 BEq, SEq
37 });
38 }
39 ir::Instr::BinImm {
40 op,
41 dst,
42 lhs,
43 imm,
44 ..
45 } => {
46 let dst = self.def_register(dst.id);
47 let lhs = self.ensure_register(*lhs);
48 let imm = *imm;
49
50 macro_rules! emit_bin_imms {
51 ($($ir:ident => $op:ident),* $(,)?) => {
52 match op {
53 $(ir::BinOp::$ir => Op::$op { dst, lhs, imm },)*
54 _ => unreachable!("only integer immediate binops are represented as BinImm"),
55 }
56 };
57 }
58
59 self.emit(emit_bin_imms! {
60 IAdd => IAddI,
61 ISub => ISubI,
62 IMul => IMulI,
63 IDiv => IDivI,
64 IMod => IModI,
65 IAnd => IAndI,
66 IEq => IEqI,
67 IGt => IGtI,
68 ILt => ILtI,
69 });
70 }
71 }
72 }
73}
これは非常にクリーンで、Rustのマクロの良い使い方です。大好きです。私に意見を言わないでください。バイナリ演算と即値付きバイナリ演算のすべての操作を57行で低レベル化することが重要です。
レジスタの確保と定義
操作を適用できるポイントまで、要求された仮想レジスタを確実にアクセス可能にするための2つのヘルパー。最初のヘルパーはensure_registerです。
RUST
1/// 仮想レジスタをVMレジスタに変換します。スピル、リストア、およびレジスタ
2/// 全般の割り当てを抽象化します。
3fn ensure_register(&mut self, id: Id) -> u8 {
4 match self.regalloc.location(id) {
5 Some(Location::Reg(r)) => return r.num(),
6 // 要求された値はスタック上にあります。リストアする必要があり、一時的な
7 // レジスタを使用します。
8 Some(Location::Stack(slot)) => {
9 let dst = self.next_tmp();
10 self.emit(Op::LoadSlot { dst, slot });
11 dst
12 }
13 None => unreachable!("%v{} has no location", id.0),
14 }
15}
16
17fn next_tmp(&self) -> u8 {
18 match self.buf.last() {
19 Some(Op::LoadSlot { dst: SCRATCH, .. }) => TMP,
20 _ => SCRATCH,
21 }
22}
これは、値が要求された場合、次のようになります。
- 事前パスでレジスタに割り当てられた場合、それは完璧であり、単純に使用できます。
- またはスタック上にある場合、コンパイラ状態に一時レジスタを要求し、その値をマテリアライズする必要があります。
仮想マシンの一時レジスタは、VMソースコードの先頭でそれぞれ
SCRATCHとTMPとして定義されています。RUST
1pub const REGISTER_COUNT: usize = 32; 2const SCRATCH: u8 = REGISTER_COUNT as u8 - 1; 3const TMP: u8 = SCRATCH - 1; 4 5/// [`SCRATCH`]と[`TMP`]以外のすべてのVMレジスタ。r0は最後です。なぜなら、xralloc2は 6/// 最小の空きレジスタを最初に渡すため、呼び出し元保存レジスタが 7/// 呼び出し先保存レジスタの前に配置されるからです。 8const POOL: [u8; TMP as usize] = { 9 let mut pool = [0; TMP as usize]; 10 let mut i = 0; 11 while i < TMP as usize { 12 pool[i] = (TMP as usize - 1 - i) as u8; 13 i += 1; 14 } 15 pool 16};
これまでのところ、ensureは理解しやすいです。もう1つのヘルパーはdef_registerです。これは、再びレジスタ番号を取得し、それがない場合はTMPを取得することを意味します。これは、以前に導入された(そしておそらく誰も気づかなかった)準備とレジスタ割り当てプリパスのコードブロックの最後にスニペットされたもので、その後、対応するバイトコード命令でスタック上のスロットに「スピル」します。
RUST
1/// オペレーションが`id`を書き込むレジスタ。`id`がスロットに格納されている場合は[`TMP`]です。ブロックループは
2/// オペレーション後にそこに格納します。
3fn def_register(&self, id: Id) -> u8 {
4 match self.regalloc.location(id) {
5 Some(Location::Reg(r)) => r.num(),
6 Some(Location::Stack(_)) => TMP,
7 None => unreachable!("%v{} has no location", id.0),
8 }
9}
全てのバイトとコードを一緒に:
-Iを-Dに(--no-jitを使用しない場合、マシンコードが得られてしまうため🤓)置き換えると、次の仮想マシンレジスタがSSA値に割り当てられます。
ASM
100000000 <f>:
2 0000: ilt_imm r3, r1, #1 ; 4: n < 1 { a + acc }
3 0001: jmpf r3, 0004 <f.bb_0004>
4 0002: iadd r0, r0, r2
5 0003: ret
600000004 <f.bb_0004>:
7 0004: isub_imm r3, r1, #1 ; 5: { f(a n-1 acc*n) }
8 0005: imul r2, r2, r1
9 0006: mov r1, r3
10 0007: tail 0000 <f>
JIT :O
クレイジーなハッカーのために、JITをオンにした場合の同じ例です。JITとBCは、IR、ライブネス解析、レジスタ割り当て、標準ライブラリを共有しています。楽しいでしょう?
ASM
10000000000000000 <jit_f>:
2 0: 48 81 fa 01 00 00 00 cmp $0x1,%rdx
3 7: 49 c7 c0 00 00 00 00 mov $0x0,%r8
4 e: 41 0f 9c c0 setl %r8b
5 12: 4d 85 c0 test %r8,%r8
6 15: 0f 84 0b 00 00 00 je 26 <jit_f+0x26>
7 1b: 48 01 ce add %rcx,%rsi
8 1e: 48 89 f0 mov %rsi,%rax
9 21: c3 ret
10 22: cc int3
11 23: cc int3
12 24: cc int3
13 25: cc int3
14 26: 49 89 d0 mov %rdx,%r8
15 29: 49 81 e8 01 00 00 00 sub $0x1,%r8
16 30: 49 89 c9 mov %rcx,%r9
17 33: 4c 0f af ca imul %rdx,%r9
18 37: 4c 89 c2 mov %r8,%rdx
19 3a: 4c 89 c9 mov %r9,%rcx
20 3d: e9 be ff ff ff jmp 0 <jit_f>
21 42: c3 ret
x86出力に意地悪しないでください。もっと短くできることはわかっています。比較とジャンプは単一の命令にでき、無駄なコードや長いエンコーディングがたくさんありますが、これは私の最初のJITであり、動作すること自体に満足しています。
今後の作業
注意深い読者は、レジスタアロケータの入力と出力を、それぞれライブセット(およびレジスタプール)と仮想レジスタから物理レジスタへの割り当てとして、私がどのように説明したかを理解したかもしれませんが、実際にはレジスタアロケータ自体や、IR設計の結果(すべてのブロック遷移(ジャンプ、エントリ、リターン)をエッジ移動として扱い、解決するために追加の作業が必要になるようにする)を示したり紹介したりしていません。
私のモチベーションが続くなら、これらのトピックについてフォローアップ記事を書くつもりですが、今はまだIR、レジスタアロケータ、バックエンド間の相互作用を「完璧にする」プロセス中です。ですから、続報にご期待ください。私が不整合なつぶやきを叫んでいる深淵の果てに実際にいる人がいれば、RSSフィードがあります。
-
これは[Z|Y]JITの人物です。信じられないほど素晴らしい記事です。コンパイラ関連に興味がある人は誰でも少なくとも2回は読むべきです↩︎
-
ここでの最適化とは、比較や算術演算のための即値のインライン展開、テールコール、および間接リターンにのみ使用されたブロックの削除を意味します↩︎
[2] タイトル: 312の米国都市における駐車アプリの手数料(中央値$0.35/セッション)
URL: https://parkgraph.com/parking-app-fees
本文:
駐車アプリの手数料(都市別)
主要な発見
- 最も一般的な手数料:$0.35(108か所)、$0.45(56か所)、$0.30(30か所)。
- 最も高い固定手数料:アラスカ州アンカレッジで$0.70。
- 15か所ではアプリ手数料は無料です。
- データは43州とコロンビア特別区の312か所をカバーしています。13行には公開されている手数料がありません。
駐車アプリの手数料(アプリ会社別)
手数料が公開されている場所でのセッションあたりの手数料(アプリ会社別)。ソースはページの下部に記載されています。
駐車アプリの手数料(アプリ会社別)
| アプリ会社 | 手数料のある場所 | 中央値手数料 | 最低~最高 | 比較 |
|---|---|---|---|---|
| ParkMobile | 289 | $0.35 | $0–$0.75 | Park Graph vs. ParkMobile |
| Passport | 5 | $0.35 | $0.10–$0.40 | Park Graph vs. Passport |
| Flowbird | 3 | $0.35 | $0.20–$0.35 | Park Graph vs. Flowbird |
| IPS Group | 2 | $0.40 | $0.35–$0.45 | 比較ページなし |
| PayByPhone | 2 | $0 | $0 | Park Graph vs. PayByPhone |
駐車アプリの手数料(場所別)
データ内のすべての場所(州別)。ソース列には、各手数料の出所と、そのページが最後に更新または確認された日時が記載されています。都市名をクリックすると、Park Graphの駐車ページ(存在する場合)にリンクされます。
駐車アプリの手数料(場所別)
| 場所 | アプリ | セッションあたりの手数料 | ソース |
|---|---|---|---|
| アンカレッジ, AK | ParkMobile | $0.70 | ParkMobileヘルプセンター、2026年7月 |
| バーミンガム, AL | ParkMobile | $0.45 | ParkMobileヘルプセンター、2025年7月 |
| ドーフィン島, AL | ParkMobile | $0.35 | ParkMobileヘルプセンター、2026年11月 |
| フローレンス, AL | ParkMobile | $0.40 | ParkMobileヘルプセンター、2025年7月 |
| ガルフショアーズ, AL | ParkMobile | $0.25 | ParkMobileヘルプセンター、2026年7月 |
| モントゴメリー, AL | ParkMobile | $0.35 | ParkMobileヘルプセンター、2025年8月 |
| イウレカ スプリングス, AR | ParkMobile | $0.35 | ParkMobileヘルプセンター、2025年7月 |
| リトルロック, AR | ParkMobile | $0.35 | ParkMobileヘルプセンター、2026年9月 |
| フェニックス, AZ | ParkMobile | $0.35 | ParkMobileヘルプセンター、2025年7月 |
| ツーソン, AZ | GoTucson Parking | 公開されていません | tucsonaz.gov、2026年11月 |
| バークレー, CA | ParkMobile | $0.35 | ParkMobileヘルプセンター、2026年10月 |
| バーバンク, CA | ParkMobile | $0 | ParkMobileヘルプセンター、2025年8月 |
| キャピトラ, CA | ParkMobile | $0.35 | ParkMobileヘルプセンター、2026年7月 |
| カーメル・バイ・ザ・シー, CA | ParkMobile | $0.35 | ParkMobileヘルプセンター、2025年5月 |
| エメリービル, CA | ParkMobile | $0.30 | ParkMobileヘルプセンター、2025年8月 |
| フレスノ, CA | ParkMobile | $0.39 | ParkMobileヘルプセンター、2026年8月 |
| フラートン, CA | ParkMobile | $0.35 | ParkMobileヘルプセンター、2025年9月 |
| ロングビーチ, CA | ParkMobile | $0.35 | ParkMobileヘルプセンター、2025年8月 |
| ロサンゼルス, CA | ParkMobile | 公開されていません | ladot.lacity.gov、2026年11月 |
| ネバダシティ, CA | ParkMobile | $0.75 | ParkMobileヘルプセンター、2025年8月 |
| オークランド, CA | ParkMobile | $0.30 | ParkMobileヘルプセンター、2025年7月 |
| レドンドビーチ, CA | ParkMobile | $0.35 | ParkMobileヘルプセンター、2025年7月 |
| サクラメント, CA | ParkMobile | $0.35 | ParkMobileヘルプセンター、2025年7月 |
| サンアンセルモ, CA | ParkMobile | $0.30 | ParkMobileヘルプセンター、2025年8月 |
| サンディエゴ, CA | Park Smarter | $0.35 | sandiego.gov、2026年11月 |
| サンディエゴ, CA | ParkMobile | $0.40 | ParkMobileヘルプセンター、2026年7月 |
| サンフランシスコ, CA | ParkMobile | $0.35 | sfmta.com、2026年11月 |
| サンレオナルド, CA | ParkMobile | $0.35 | ParkMobileヘルプセンター、2025年7月 |
| サンラファエル, CA | ParkMobile | $0.35 | ParkMobileヘルプセンター、2025年7月 |
| サンタアナ, CA | ParkMobile | $0.30 | ParkMobileヘルプセンター、2025年7月 |
| サンタクルーズ, CA | ParkMobile | $0.35 | ParkMobileヘルプセンター、2025年7月 |
| サウサリート, CA | ParkMobile | $0.35 | ParkMobileヘルプセンター、2025年7月 |
| サウスサンフランシスコ, CA | ParkMobile | $0.20 | ParkMobileヘルプセンター、2025年7月 |
| ストックトン, CA | ParkMobile | $0.35 | ParkMobileヘルプセンター、2025年7月 |
| スイスンシティ, CA | ParkMobile | $0.50 | ParkMobileヘルプセンター、2025年7月 |
| ユニオンシティ, CA | ParkMobile | $0 | ParkMobileヘルプセンター、2025年7月 |
| バレーホ, CA | ParkMobile | $0.35 | ParkMobileヘルプセンター、2025年7月 |
| ウォルナットクリーク, CA | ParkMobile | $0.35 | ParkMobileヘルプセンター、2025年7月 |
| ボルダー, CO | ParkMobile | $0.35 | ParkMobileヘルプセンター、2026年10月 |
| コロラドスプリングス, CO | ParkMobile | $0.30 | ParkMobileヘルプセンター、2025年5月 |
| デンバー, CO | PayByPhone | 公開されていません | denvergov.org、2026年11月 |
| エステスパーク, CO | ParkMobile | $0.35 | ParkMobileヘルプセンター、2025年8月 |
| ゴールデン, CO | ParkMobile | $0.35 | ParkMobileヘルプセンター、2025年8月 |
| マウンテンビレッジ, CO | ParkMobile | $0 | ParkMobileヘルプセンター、2025年7月 |
| ダンベリー, CT | ParkMobile | $0.40 | ParkMobileヘルプセンター、2025年8月 |
| グリニッジ, CT | ParkMobile | $0.45 | ParkMobileヘルプセンター、2025年8月 |
| ミドルタウン, CT | ParkMobile | $0.30 | ParkMobileヘルプセンター、2026年5月 |
| ニューヘイブン, CT | ParkMobile | $0.43 | ParkMobileヘルプセンター、2025年7月 |
| ロウエイトン, CT | ParkMobile | $0.35 | ParkMobileヘルプセンター、2025年7月 |
| スタンフォード, CT | ParkMobile | $0.35 | ParkMobileヘルプセンター、2025年7月 |
| ストラットフォード, CT | ParkMobile | $0.35 | ParkMobileヘルプセンター、2026年6月 |
| ワシントン, DC | ParkMobile | $0.45 | ParkMobileヘルプセンター、2026年9月 |
| ベサニービーチ, DE | ParkMobile | $0.50 | ParkMobileヘルプセンター、2025年5月 |
| フェンウィック島, DE | ParkMobile | $0.35 | ParkMobileヘルプセンター、2025年8月 |
| ルイス, DE | ParkMobile | $0.50 | ParkMobileヘルプセンター、2025年8月 |
| レホボスビーチ, DE | ParkMobile | $0.50 | ParkMobileヘルプセンター、2025年7月 |
| ウィルミントン, DE | ParkMobile | $0.45 | ParkMobileヘルプセンター、2026年6月 |
| ベルエアビーチ, FL | ParkMobile | $0.35 | ParkMobileヘルプセンター、2025年9月 |
| ボカラトン, FL | ParkMobile | $0.30 | ParkMobileヘルプセンター、2025年5月 |
| ボイントンビーチ, FL | ParkMobile | $0.45 | ParkMobileヘルプセンター、2026年1月 |
| シャルロット郡, FL | ParkMobile | $0.45 | ParkMobileヘルプセンター、2025年5月 |
| クリアウォーター, FL | ParkMobile | $0.35 | ParkMobileヘルプセンター、2025年5月 |
| デルレイビーチ, FL | ParkMobile | $0.45 | ParkMobileヘルプセンター、2025年8月 |
| フォートマイヤーズ, FL | ParkMobile | $0.45 | ParkMobileヘルプセンター、2025年8月 |
| ハランドールビーチ, FL | ParkMobile | $0.60 | ParkMobileヘルプセンター、2025年8月 |
| ハリウッド, FL | ParkMobile | $0.35 | ParkMobileヘルプセンター、2026年10月 |
| ジャクソンビル, FL | ParkMobile | $0.45 | jacksonville.gov、2026年11月 |
| レイクワースビーチ, FL | ParkMobile | $0.35 | ParkMobileヘルプセンター、2025年8月 |
| レイクランド, FL | ParkMobile | $0.45 | ParkMobileヘルプセンター、2026年10月 |
| マデイラビーチ, FL | ParkMobile | $0.35 | ParkMobileヘルプセンター、2025年8月 |
| マイアミ, FL | PayByPhone | $0 | miamiparking.com、2026年11月 |
| マイアミビーチ, FL | ParkMobile | $0.35 | ParkMobileヘルプセンター、2025年7月 |
| オカラ, FL | ParkMobile | $0.25 | ParkMobileヘルプセンター、2026年10月 |
| オーランド, FL | ParkMobile | $0.45 | ParkMobileヘルプセンター、2025年7月 |
| パームビーチ, FL | ParkMobile | $0.40 | ParkMobileヘルプセンター、2026年7月 |
| パームビーチ郡, FL | ParkMobile | $0.35 | ParkMobileヘルプセンター、2025年7月 |
| ペンサコーラ, FL | ParkMobile | $0.25 | ParkMobileヘルプセンター、2025年7月 |
| サラソタ, FL | ParkMobile | $0.30 | ParkMobileヘルプセンター、2025年7月 |
| スチュアート, FL | ParkMobile | $0.35 | ParkMobileヘルプセンター、2025年7月 |
| タンパ, FL | ParkMobile | $0.35 | ParkMobileヘルプセンター、2026年10月 |
| トレジャーアイランド, FL | ParkMobile | $0.35 | ParkMobileヘルプセンター、2025年7月 |
| ワクラ郡, FL | ParkMobile | $0.25 | ParkMobileヘルプセンター、2025年7月 |
| ウェストパームビーチ, FL | ParkMobile | $0.35 | ParkMobileヘルプセンター、2025年7月 |
| アトランタ, GA | ParkMobile | $0.30 | ParkMobileヘルプセンター、2025年6月 |
| ローマ, GA | ParkMobile | $0 | ParkMobileヘルプセンター、2025年7月 |
| ロズウェル, GA | ParkMobile | $0.35 | ParkMobileヘルプセンター、2025年7月 |
| エイムズ, IA | ParkMobile | $0.45 | ParkMobileヘルプセンター、2025年5月 |
| ダベンポート, IA | ParkMobile | 公開されていません | ParkMobileヘルプセンター、2026年10月 |
| スーシティ, IA | ParkMobile | $0.35 | ParkMobileヘルプセンター、2026年6月 |
| ボイシ, ID | ParkMobile | $0.25 | ParkMobileヘルプセンター、2025年9月 |
| オーロラ, IL | ParkMobile | $0.55 | ParkMobileヘルプセンター、2026年10月 |
| キャリー, IL | ParkMobile | $0.37 | ParkMobileヘルプセンター、2025年5月 |
| シカゴ, IL | ParkChicago | $0.35 | parkchicago.com、2026年11月 |
| イーストヘイゼルクレスト, IL | ParkMobile | $0.45 | ParkMobileヘルプセンター、2025年8月 |
| エルバーン, IL | ParkMobile | $0.55 | ParkMobileヘルプセンター、2025年8月 |
| フランクリンパーク, IL | ParkMobile | $0.50 | ParkMobileヘルプセンター、2025年8月 |
| グレンコー, IL | ParkMobile | $0.25 | ParkMobileヘルプセンター、2025年7月 |
| レイクフォレスト, IL | ParkMobile | $0.37 | ParkMobileヘルプセンター、2025年8月 |
| リバティビル, IL | ParkMobile | $0.37 | ParkMobileヘルプセンター、2025年8月 |
| ミッドロージアン, IL | ParkMobile | $0.37 | ParkMobileヘルプセンター、2025年7月 |
| モケナ, IL | ParkMobile | $0.35 | ParkMobileヘルプセンター、2025年7月 |
| マウントプロスペクト, IL | Flowbird | $0.35 | mountprospect.org、2026年11月 |
| ノースブルック, IL | ParkMobile | $0.37 | ParkMobileヘルプセンター、2025年7月 |
| ロゼル, IL | ParkMobile | $0.37 | ParkMobileヘルプセンター、2026年6月 |
| バノン郡, IL | ParkMobile | $0.37 | ParkMobileヘルプセンター、2025年7月 |
| ウッドデール, IL | ParkMobile | $0.37 | ParkMobileヘルプセンター、2025年7月 |
| ブルーミントン, IN | ParkMobile | $0.50 | ParkMobileヘルプセンター、2025年5月 |
| インディアナポリス, IN | ParkMobile | $0.25 | ParkMobileヘルプセンター、2026年10月 |
| ローレンス, KS | ParkMobile | $0.35 | ParkMobileヘルプセンター、2025年8月 |
| ニューオーリンズ, LA | ParkMobile | $0.35 | nola.gov、2026年11月 |
| シュリーブポート, LA | ParkMobile | $0.35 | ParkMobileヘルプセンター、2025年7月 |
| アマースト, MA | ParkMobile | $0.35 | ParkMobileヘルプセンター、2025年5月 |
| アトルボロ, MA | ParkMobile | $0 | ParkMobileヘルプセンター、2026年9月 |
| ボストン, MA | ParkBoston | $0.15 | boston.gov、2026年11月 |
| ホリヨーク, MA | ParkMobile | $0.13 | ParkMobileヘルプセンター、2025年9月 |
| ローレンス, MA | ParkMobile | 公開されていません | ParkMobileヘルプセンター、2026年11月 |
| メドフォード, MA | ParkMobile | $0.30 | ParkMobileヘルプセンター、2025年8月 |
| ノーサンプトン, MA | ParkMobile | $0.20 | ParkMobileヘルプセンター、2025年10月 |
| サマービル, MA | ParkMobile | $0.50 | ParkMobileヘルプセンター、2025年7月 |
| ボルチモア, MD | ParkMobile | $0.35 | ParkMobileヘルプセンター、2025年9月 |
| ブルンズウィック, MD | ParkMobile | $0.45 | ParkMobileヘルプセンター、2025年9月 |
| チャールズタウン, MD | ParkMobile | $0.35 | ParkMobileヘルプセンター、2025年5月 |
| カレッジパーク, MD | ParkMobile | $0.40 | ParkMobileヘルプセンター、2025年11月 |
| カンバーランド, MD | ParkMobile | $0.45 | ParkMobileヘルプセンター、2025年5月 |
| エミッツバーグ, MD | ParkMobile | $0.45 | ParkMobileヘルプセンター、2025年7月 |
| フレデリック, MD | ParkMobile | $0.50 | ParkMobileヘルプセンター、2025年8月 |
| ハイアッツビル, MD | ParkMobile | $0.45 | ParkMobileヘルプセンター、2025年8月 |
| モンゴメリー郡, MD | ParkMobile | $0.45 | ParkMobileヘルプセンター、2026年10月 |
| モンゴメリー郡, MD | Passport | $0.35 | montgomerycountymd.gov、2026年11月 |
| オーシャンシティ, MD | ParkMobile | $0.50 | ParkMobileヘルプセンター、2026年9月 |
| プリンスジョージズ郡, MD | ParkMobile | $0.45 | ParkMobileヘルプセンター、2025年7月 |
| ロックビル, MD | ParkMobile | $0.45 | ParkMobileヘルプセンター、2025年7月 |
| タコマパーク, MD | ParkMobile | $0.45 | ParkMobileヘルプセンター、2025年7月 |
| ウェストミンスター, MD | ParkMobile | $0.45 | ParkMobileヘルプセンター、2025年7月 |
| ウースター郡, MD | ParkMobile | $0.40 | ParkMobileヘルプセンター、2025年7月 |
| バーハーバー, ME | ParkMobile | $0.35 | ParkMobileヘルプセンター、2026年6月 |
| ブースベイハーバー, ME | ParkMobile | $0.25 | ParkMobileヘルプセンター、2026年1月 |
| ヨーク, ME | ParkMobile | $0.50 | ParkMobileヘルプセンター、2026年8月 |
| バーミンガム, MI | ParkMobile | $0.43 | ParkMobileヘルプセンター、2025年5月 |
| チャーレボア, MI | ParkMobile | $0.35 | ParkMobileヘルプセンター、2025年9月 |
| ディアボーン, MI | ParkMobile | $0.35 | ParkMobileヘルプセンター、2025年8月 |
| グロースポイント, MI | ParkMobile | $0.50 | ParkMobileヘルプセンター、2025年8月 |
| ホートン, MI | ParkMobile | $0.35 | ParkMobileヘルプセンター、2025年8月 |
| ミルフォード, MI | ParkMobile | $0.35 | ParkMobileヘルプセンター、2025年7月 |
| マウントクレメンス, MI | ParkMobile | $0.35 | ParkMobileヘルプセンター、2025年7月 |
| ペトスキー, MI | ParkMobile | $0.10 | ParkMobileヘルプセンター、2025年7月 |
| ロチェスター, MI | ParkMobile | $0.43 | ParkMobileヘルプセンター、2025年7月 |
| ロジャーズシティ, MI | ParkMobile | $0.35 | ParkMobileヘルプセンター、2025年7月 |
| ロイヤルオーク, MI | ParkMobile | $0.35 | ParkMobileヘルプセンター、2026年10月 |
| ソルトセントマリー, MI | ParkMobile | $0.35 | ParkMobileヘルプセンター、2025年7月 |
| サウスヘイブン, MI | ParkMobile | $0.37 | ParkMobileヘルプセンター、2025年7月 |
| トラバースシティ, MI | ParkMobile | $0.35 | ParkMobileヘルプセンター、2025年7月 |
| ファルコンハイツ, MN | ParkMobile | $0 | ParkMobileヘルプセンター、2025年8月 |
| ロチェスター, MN | ParkMobile | $0.25 | ParkMobileヘルプセンター、2025年7月 |
| セントクラウド, MN | ParkMobile | $0.25 | ParkMobileヘルプセンター、2026年10月 |
| ウェイザタ, MN | ParkMobile | $0.45 | ParkMobileヘルプセンター、2025年9月 |
| クレイトン, MO | ParkMobile | $0.65 | ParkMobileヘルプセンター、2026年8月 |
| コロンビア, MO | ParkMobile | $0.55 | ParkMobileヘルプセンター、2025年7月 |
| カンザスシティ, MO | ParkMobile | $0.45 | ParkMobileヘルプセンター、2025年8月 |
| チャペルヒル, NC | ParkMobile | $0.35 | ParkMobileヘルプセンター、2026年10月 |
| シャーロット, NC | ParkMobile | 公開されていません | charlottenc.gov、2026年11月 |
| ダンハム, NC | ParkMobile | $0.20 | ParkMobileヘルプセンター、2026年8月 |
| グリーンスボロ, NC | ParkMobile | $0.35 | ParkMobileヘルプセンター、2025年8月 |
| ヘンダーソンビル, NC | ParkMobile | $0.35 | ParkMobileヘルプセンター、2026年7月 |
| ニューバーン, NC | ParkMobile | $0.45 | ParkMobileヘルプセンター、2025年7月 |
| ローリー, NC | Passport | 公開されていません | raleighnc.gov、2026年11月 |
| オマハ, NE | ParkMobile | $0.45 | ParkMobileヘルプセンター、2025年7月 |
| キーン, NH | ParkMobile | $0.45 | ParkMobileヘルプセンター、2026年10月 |
| リトルトン, NH | ParkMobile | $0.45 | ParkMobileヘルプセンター、2025年8月 |
| ポーツマス, NH | ParkMobile | $0.35 | ParkMobileヘルプセンター、2026年7月 |
| アズベリーパーク, NJ | ParkMobile | $0.30 | ParkMobileヘルプセンター、2025年5月 |
| アトランティックシティ, NJ | ParkMobile | $0.35 | ParkMobileヘルプセンター、2025年5月 |
| ブルームフィールド, NJ | ParkMobile | $0.35 | ParkMobileヘルプセンター、2025年5月 |
| コールドウェル, NJ | ParkMobile | $0.45 | ParkMobileヘルプセンター、2025年5月 |
| ケープメイ, NJ | ParkMobile | $0.35 | ParkMobileヘルプセンター、2026年9月 |
| チャタム, NJ | ParkMobile | $0 | ParkMobileヘルプセンター、2025年5月 |
| コリングスウッド, NJ | ParkMobile | $0.35 | ParkMobileヘルプセンター、2025年9月 |
| イーストブランズウィック, NJ | ParkMobile | $0.45 | ParkMobileヘルプセンター、2025年8月 |
| イーストニューアーク, NJ | ParkMobile | $0.30 | ParkMobileヘルプセンター、2025年8月 |
| イーストオレンジ, NJ | ParkMobile | $0.45 | ParkMobileヘルプセンター、2025年8月 |
| エリザベス, NJ | ParkMobile | $0.45 | ParkMobileヘルプセンター、2025年8月 |
| イングルウッド, NJ | ParkMobile | $0.35 | ParkMobileヘルプセンター、2026年6月 |
| フェアローン, NJ | ParkMobile | $0 | ParkMobileヘルプセンター、2025年8月 |
| ガーウッド, NJ | ParkMobile | $0.25 | ParkMobileヘルプセンター、2025年9月 |
| グレンロック, NJ | ParkMobile | $0.35 | ParkMobileヘルプセンター、2025年8月 |
| グテンバーグ, NJ | ParkMobile | $0.30 | ParkMobileヘルプセンター、2025年8月 |
| ヒルズデール, NJ | ParkMobile | $0.40 | ParkMobileヘルプセンター、2025年8月 |
| ホーホーカス, NJ | ParkMobile | $0.35 | ParkMobileヘルプセンター、2025年8月 |
| ホーボーケン, NJ | ParkMobile | $0.35 | ParkMobileヘルプセンター、2025年12月 |
| アーヴィントン・タウンシップ, NJ | ParkMobile | $0.25 | ParkMobileヘルプセンター、2025年8月 |
| ジャージーシティ, NJ | ParkMobile | $0.35 | ParkMobileヘルプセンター、2025年9月 |
| カーニー, NJ | ParkMobile | $0.60 | ParkMobileヘルプセンター、2025年8月 |
| ランバートビル, NJ | ParkMobile | $0.50 | ParkMobileヘルプセンター、2025年8月 |
| マナスクアン, NJ | ParkMobile | $0.60 | ParkMobileヘルプセンター、2025年8月 |
| メープルウッド, NJ | ParkMobile | $0.45 | ParkMobileヘルプセンター、2025年8月 |
| メタチェン, NJ | ParkMobile | $0.50 | ParkMobileヘルプセンター、2025年8月 |
| モンクレア, NJ | ParkMobile | $0.35 | ParkMobileヘルプセンター、2025年7月 |
| モーリストタウン, NJ | ParkMobile | $0.40 | ParkMobileヘルプセンター、2025年7月 |
| ニューアーク, NJ | ParkMobile | $0.45 | ParkMobileヘルプセンター、2025年7月 |
| ノースワイルドウッド, NJ | ParkMobile | $0.35 | ParkMobileヘルプセンター、2025年8月 |
| オーシャンシティ, NJ | ParkMobile | $0.45 | ParkMobileヘルプセンター、2025年7月 |
| パサイック, NJ | ParkMobile | $0.45 | ParkMobileヘルプセンター、2025年7月 |
| フィリップスバーグ, NJ | ParkMobile | $0.30 | ParkMobileヘルプセンター、2025年12月 |
| プロスペクトパーク, NJ | ParkMobile | $0 | ParkMobileヘルプセンター、2025年10月 |
| リッジウッド, NJ | ParkMobile | $0.40 | ParkMobileヘルプセンター、2025年7月 |
| セーラム, NJ | ParkMobile | $0.40 | ParkMobileヘルプセンター、2025年7月 |
| シーアイルシティ, NJ | ParkMobile | $0.30 | ParkMobileヘルプセンター、2025年7月 |
| セカカス, NJ | ParkMobile | $0.35 | ParkMobileヘルプセンター、2025年10月 |
| サマーズポイント, NJ | ParkMobile | $0.45 | ParkMobileヘルプセンター、2025年7月 |
| サウスオレンジ, NJ | ParkMobile | $0.30 | ParkMobileヘルプセンター、2025年12月 |
| ストーンハーバー, NJ | ParkMobile | $0.30 | ParkMobileヘルプセンター、2025年9月 |
| サミット, NJ | ParkMobile | $0.35 | ParkMobileヘルプセンター、2025年8月 |
| ティネック, NJ | ParkMobile | $0.30 | ParkMobileヘルプセンター、2025年7月 |
| ユニオンシティ, NJ | ParkMobile | $0.45 | ParkMobileヘルプセンター、2025年7月 |
| ウェストニューヨーク, NJ | ParkMobile | $0.45 | ParkMobileヘルプセンター、2025年7月 |
| ウェストウッド, NJ | ParkMobile | $0.35 | ParkMobileヘルプセンター、2025年7月 |
| ワイルドウッド, NJ | ParkMobile | $0.35 | ParkMobileヘルプセンター、2026年10月 |
| ワイルドウッドクレスト, NJ | ParkMobile | $0.45 | ParkMobileヘルプセンター、2025年7月 |
| サンタフェ, NM | ParkMobile | $0.20 | ParkMobileヘルプセンター、2025年8月 |
| ラスベガス, NV | ParkMobile | $0.35 | ParkMobileヘルプセンター、2025年8月 |
| コーンウォール・オン・ハドソン, NY | ParkMobile | $0.55 | ParkMobileヘルプセンター、2025年7月 |
| ドブスフェリー, NY | ParkMobile | $0.30 | ParkMobileヘルプセンター、2025年7月 |
| エルムスフォード, NY | ParkMobile | $0.30 | ParkMobileヘルプセンター、2025年7月 |
| フリーポート, NY | ParkMobile | $0.33 | ParkMobileヘルプセンター、2026年8月 |
| グレートネックプラザ, NY | ParkMobile | $0.45 | ParkMobileヘルプセンター、2025年8月 |
| ハスティングス・オン・ハドソン, NY | ParkMobile | $0.55 | ParkMobileヘルプセンター、2026年7月 |
| ハドソン, NY | ParkMobile | $0.60 | ParkMobileヘルプセンター、2026年9月 |
| アイランドパーク, NY | ParkMobile | $0.45 | ParkMobileヘルプセンター、2026年7月 |
| イサカ, NY | ParkMobile | $0.35 | ParkMobileヘルプセンター、2026年10月 |
| ママロネック, NY | ParkMobile | $0.25 | ParkMobileヘルプセンター、2025年7月 |
| ニューヨーク, NY | ParkNYC | $0.20 | portal.311.nyc.gov、2026年11月 |
| ナイアック, NY | ParkMobile | $0.30 | ParkMobileヘルプセンター、2026年7月 |
| オランジェタウン, NY | ParkMobile | $0.45 | ParkMobileヘルプセンター、2025年8月 |
| パッチョーク, NY | ParkMobile | $0.35 | ParkMobileヘルプセンター、2025年7月 |
| サグハーバー, NY | ParkMobile | $0.30 | ParkMobileヘルプセンター、2025年7月 |
| サファーン, NY | ParkMobile | $0.35 | ParkMobileヘルプセンター、2026年10月 |
| タキシード, NY | ParkMobile | $0 | ParkMobileヘルプセンター、2025年7月 |
| ヨンカーズ, NY | ParkMobile | $0.30 | ParkMobileヘルプセンター、2025年7月 |
| アテネ, OH | ParkMobile | $0.35 | ParkMobileヘルプセンター、2025年5月 |
| チルリコシー, OH | ParkMobile | $0.39 | ParkMobileヘルプセンター、2025年9月 |
| クリーブランド, OH | ParkMobile | $0.35 | ParkMobileヘルプセンター、2026年5月 |
| コロンバス, OH | ParkColumbus (ParkMobile) | 公開されていません | columbus.gov、2026年11月 |
| デラウェア, OH | ParkMobile | $0.40 | ParkMobileヘルプセンター、2026年10月 |
| レイクウッド, OH | ParkMobile | $0.35 | ParkMobileヘルプセンター、2025年8月 |
| リマ, OH | ParkMobile | $0.30 | ParkMobileヘルプセンター、2025年9月 |
| ラブランド, OH | ParkMobile | $0.35 | ParkMobileヘルプセンター、2025年8月 |
| オックスフォード, OH | ParkMobile | $0.35 | ParkMobileヘルプセンター、2025年7月 |
| トレド, OH | ParkMobile | $0.35 | ParkMobileヘルプセンター、2025年7月 |
| オクラホマシティ, OK | Flowbird | 公開されていません | embarkok.com、2026年11月 |
| タルサ, OK | ParkMobile | $0 | ParkMobileヘルプセンター、2026年8月 |
| ユージーン, OR | ParkMobile | $0 | ParkMobileヘルプセンター、2025年8月 |
| ポートランド, OR | Parking Kitty | $0.10 | portland.gov、2026年11月 |
| アレンタウン, PA | ParkMobile | $0.45 | ParkMobileヘルプセンター、2025年9月 |
| ベツレヘム, PA | ParkMobile | $0.45 | ParkMobileヘルプセンター、2025年9月 |
| カリフォルニア, PA | ParkMobile | $0.40 | ParkMobileヘルプセンター、2026年8月 |
| コンショホッケン, PA | ParkMobile | $0.55 | ParkMobileヘルプセンター、2025年7月 |
| ドイルズタウン・タウンシップ, PA | ParkMobile | $0.65 | ParkMobileヘルプセンター、2025年8月 |
| ハンティンドン, PA | ParkMobile | $0.45 | ParkMobileヘルプセンター、2026年9月 |
| ランカスター, PA | ParkMobile | $0.35 | ParkMobileヘルプセンター、2025年8月 |
| レバノン, PA | ParkMobile | $0.40 | ParkMobileヘルプセンター、2025年8月 |
| ロウアーメリオン・タウンシップ, PA | ParkMobile | $0.40 | ParkMobileヘルプセンター、2025年8月 |
| マリエッタ, PA | ParkMobile | $0.25 | ParkMobileヘルプセンター、2026年1月 |
| ニューホープ, PA | ParkMobile | $0.35 | ParkMobileヘルプセンター、2026年8月 |
| フィラデルフィア, PA | ParkMobile | $0.40 | ParkMobileヘルプセンター、2026年8月 |
| ピッツバーグ, PA | ParkMobile | $0.08 | ParkMobileヘルプセンター、2025年7月 |
| ポッツタウン, PA | ParkMobile | $0.35 | ParkMobileヘルプセンター、2025年7月 |
| クエーカータウン, PA | ParkMobile | $0.45 | ParkMobileヘルプセンター、2025年7月 |
| レディング, PA | ParkMobile | $0.45 | ParkMobileヘルプセンター、2025年7月 |
| ヨーク, PA | ParkMobile | $0.30 | ParkMobileヘルプセンター、2026年2月 |
| プロビデンス, RI | ParkMobile | $0.35 | ParkMobileヘルプセンター、2025年7月 |
| クレムソン, SC | ParkMobile | $0.40 | ParkMobileヘルプセンター、2025年8月 |
| クラークスビル, TN | ParkMobile | $0.35 | clarksvilletn.gov、2026年11月 |
| ルックアウトマウンテン, TN | ParkMobile | $0.35 | ParkMobileヘルプセンター、2025年8月 |
| ナッシュビル, TN | 公開されていません | 公開されていません | nashville.gov、2026年11月 |
| アビリーン, TX | ParkMobile | $0.35 | ParkMobileヘルプセンター、2026年10月 |
| オースティン, TX | Park ATX | $0.40 | austintexas.gov、2026年11月 |
| ダラス, TX | ParkMobile | $0.35 | ParkMobileヘルプセンター、2025年8月 |
| エルパソ, TX | Park 915 (ParkMobile) | $0.45 | ParkMobileヘルプセンター、2025年8月 |
| フォートワース, TX | ParkMobile | $0.35 | ParkMobileヘルプセンター、2025年8月 |
| ヒューストン, TX | ParkMobile | $0.20 | ParkMobileヘルプセンター、2025年8月 |
| ハンツビル, TX | ParkMobile | $0.30 | ParkMobileヘルプセンター、2025年8月 |
| マッカレン, TX | ParkMobile | $0.30 | ParkMobileヘルプセンター、2025年8月 |
| ニューブラウンフェルズ, TX | ParkMobile | $0.35 | ParkMobileヘルプセンター、2025年7月 |
| サンアントニオ, TX | SAPark | 公開されていません | saparkapp.sanantonio.gov、2026年11月 |
| アメリカンフォーク, UT | ParkMobile | $0.45 | ParkMobileヘルプセンター、2025年9月 |
| アレクサンドリア, VA | ParkMobile | $0.45 | ParkMobileヘルプセンター、2025年7月 |
| アーリントン, VA | ParkMobile | $0.38 | ParkMobileヘルプセンター、2026年10月 |
| リーズバーグ, VA | ParkMobile | $0.38 | ParkMobileヘルプセンター、2025年7月 |
| マナサス, VA | ParkMobile | $0.30 | ParkMobileヘルプセンター、2025年8月 |
| ウィンチェスター, VA | ParkMobile | $0.45 | ParkMobileヘルプセンター、2026年10月 |
| バレー, VT | ParkMobile | 公開されていません | ParkMobileヘルプセンター、2025年9月 |
| バーリントン, VT | ParkMobile | $0.30 | ParkMobileヘルプセンター、2026年10月 |
| モンペリエ, VT | ParkMobile | $0.45 | ParkMobileヘルプセンター、2025年7月 |
| ウィノスキー, VT | ParkMobile | $0.30 | ParkMobileヘルプセンター、2025年8月 |
| ウッドストック, VT | ParkMobile | $0.35 | ParkMobileヘルプセンター、2025年7月 |
| ベルビュー, WA | ParkMobile | $0.35 | ParkMobileヘルプセンター、2025年7月 |
| クラーク郡, WA | Flowbird | $0.35 | clark.wa.gov、2026年11月 |
| リーブンワース, WA | ParkMobile | $0.35 | ParkMobileヘルプセンター、2025年8月 |
| ポートタウンゼント, WA | ParkMobile | $0.45 | ParkMobileヘルプセンター、2025年9月 |
| シアトル, WA | PayByPhone | $0 | news.seattle.gov、2026年11月 |
| スポケーン, WA | ParkMobile | $0 | ParkMobileヘルプセンター、2025年11月 |
| バンクーバー, WA | ParkMobile | $0.35 | ParkMobileヘルプセンター、2025年7月 |
| フォンデュラ, WI | ParkMobile | $0.37 | ParkMobileヘルプセンター、2025年7月 |
| ラクロス, WI | ParkMobile | $0.33 | ParkMobileヘルプセンター、2025年7月 |
| ジェネバ湖, WI | ParkMobile | 公開されていません | ParkMobileヘルプセンター、2025年7月 |
| マディソン, WI | Park Smarter | $0.45 | cityofmadison.com、2026年11月 |
| ミルウォーキー, WI | MKE Park (ParkMobile) | $0.38 | ParkMobileヘルプセンター、2026年6月 |
| ホワイトフィッシュベイ, WI | ParkMobile | $0.35 | ParkMobileヘルプセンター、2025年8月 |
| チャールストン, WV | ParkMobile | $0.40 | ParkMobileヘルプセンター、2025年7月 |
| クラークスバーグ, WV | ParkMobile | $0.35 | ParkMobileヘルプセンター、2025年8月 |
| ハーパーズフェリー, WV | ParkMobile | $0.35 | ParkMobileヘルプセンター、2025年7月 |
| ハンティントン, WV | ParkMobile | $0.40 | ParkMobileヘルプセンター、2025年7月 |
| モーガンタウン, WV | ParkMobile | $0.25 | ParkMobileヘルプセンター、2025年7月 |
| ホイーリング, WV | ParkMobile | $0.45 | ParkMobileヘルプセンター、2025年7月 |
公開されていません:ソースページに手数料の記載がない場合。
駐車場所有者向け
このレポートの手数料は、お客様の料金に加えて、ドライバーが支払うものです。Park Graphはオペレーター側でトランザクションごとのソフトウェア手数料を請求し、ドライバーに別途手数料を追加することはありません。ドライバーはサインのQRコードをスキャンし、お客様が設定した料金を、ダウンロード不要のアプリで支払います。各プランの手数料については、Park Graphの料金をご覧ください。または、Park Graphと上記のアプリを比較してください。
- Park Graph vs. ParkMobile
- Park Graph vs. PayByPhone
- Park Graph vs. Passport
- Park Graph vs. Flowbird
- Park Graph vs. HONK
- すべての比較
方法論
Park Graphは、各米国都市でアプリ会社または都市が公開している、駐車セッションを開始するためにドライバーが支払うセッションあたりの手数料を収集しました。対象は、ParkMobile、PayByPhone、Passport、Flowbird、Park Smarter、およびこれらの会社が運営する都市ブランドのアプリです。ソースは、アプリ会社のヘルプページおよび公式の都市ページです。会社ページと都市ページが異なる場合、CSVのfee_notes列にその旨が記載されます。
公開されている手数料がない場所も行として残し、ここでは「公開されていません」と表示しています。アプリ会社が提供する会員プランとその価格は、CSVの会員列に記載されています。すべての行は2026年11月5日に確認されました。
ソース
- ParkMobileヘルプセンター · 2026年11月現在、289の都市とゾーンの記事がCSVにリンクされています。
- ツーソン, AZ: tucsonaz.gov · 2026年11月現在
- ロサンゼルス, CA: ladot.lacity.gov · 2026年11月現在
- サンディエゴ, CA: sandiego.gov · 2026年11月現在
- サンフランシスコ, CA: sfmta.com · 2026年11月現在
- デンバー, CO: denvergov.org · 2026年11月現在
- ジャクソンビル, FL: jacksonville.gov · 2026年11月現在
- マイアミ, FL: miamiparking.com · 2026年11月現在
- シカゴ, IL: parkchicago.com · 2026年11月現在
- マウントプロスペクト, IL: mountprospect.org · 2026年11月現在
- ニューオーリンズ, LA: nola.gov · 2026年11月現在
- ボストン, MA: boston.gov · 2026年11月現在
- モンゴメリー郡, MD: montgomerycountymd.gov · 2026年11月現在
- シャーロット, NC: charlottenc.gov · 2026年11月現在
- ローリー, NC: raleighnc.gov · 2026年11月現在
- ニューヨーク, NY: portal.311.nyc.gov · 2026年11月現在
- コロンバス, OH: columbus.gov · 2026年11月現在
- オクラホマシティ, OK: embarkok.com · 2026年11月現在
- ポートランド, OR: portland.gov · 2026年11月現在
- クラークスビル, TN: clarksvilletn.gov · 2026年11月現在
- ナッシュビル, TN: nashville.gov · 2026年11月現在
- オースティン, TX: austintexas.gov · 2026年11月現在
- サンアントニオ, TX: saparkapp.sanantonio.gov · 2026年11月現在
- クラーク郡, WA: clark.wa.gov · 2026年11月現在
- シアトル, WA: news.seattle.gov · 2026年11月現在
- マディソン, WI: cityofmadison.com · 2026年11月現在