这句的正确答案是our communication wouldn't be so efficient and convenient.
其实, 语法上来说,两种语态都可以用,但看你要表达什么。
在英文中,表达过去的语态通常还有一层潜台词,就是现在的情况已经不同了。 例如,
He helped me with my housework. He is a nice person. 他帮了我做家务. 他是一个好人。(他现在还是一个好人。)
He helped me with my housework. He was a nice person. 他帮了我做家务. 他曾是一个好人. (他已经死了,或是他己经变了,不再是好人了。)
这样回来理解你的问题,
But for you, I would have lost my way. 用过去时是因为我已经不再lost了.
而our communication wouldn't be so efficient and convenient 不要用过去时是因为手机现在仍然很efficient and convenient.
efficient 可以改为 fast, 但fast和convenient的意思有重叠,efficient 比较好。
因为这个虚拟语气针对的是已经存在的现实,所以用would not have been
But for you, I would have lost my way. 是对过去的虚拟。
因为说这个事情的时候,这件事情已经发生了。(要不是你,我就已经迷路了)
事实是你那天帮了我结果我没迷路。你想想这件事情是不是已经发生了。
另外,如果把efficient 换成 fast 就是字面翻译了,不太合适。
想想看 fast communication是什么意思?是指很快的交流,是指时间很快,很短时间的交流。 efficient是指效率高的。
英语如同其他语言一样,“约定俗成”是非常重要的。
你提到的“but for you”,实质上是 “if you had not helped me,”的简略表达型式,所以后面必然要接“I would have lost my way”。
同样在你的句子中,“but for mobile phone”表达的是类似“if mobile had not be used(developed)”的意思。后面接“……would not have been……”那是很自然的了。
对于这种(类)句型熟记就成了。
再补充一句,句中的“efficient”不可以用“fast”代替,“fast”(快速)仅是“efficient”(高效率——那么有效)的一个要素,而不能包括其他优异特点。